From 2462429eb70e7d88d13a6346dd7dfd66997854a4 Mon Sep 17 00:00:00 2001 From: jfrijters Date: Fri, 19 Aug 2011 09:09:50 +0000 Subject: [PATCH] Implemented positional read/write. --- openjdk/sun/nio/ch/IOUtil.java | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/openjdk/sun/nio/ch/IOUtil.java b/openjdk/sun/nio/ch/IOUtil.java index fe5caaef..45b9b704 100644 --- a/openjdk/sun/nio/ch/IOUtil.java +++ b/openjdk/sun/nio/ch/IOUtil.java @@ -73,8 +73,23 @@ class IOUtil { { if (dst.isReadOnly()) throw new IllegalArgumentException("Read-only buffer"); + if (position != -1) - throw new ikvm.internal.NotYetImplementedError(); + { + synchronized (lock) + { + long prevpos = fd.getFilePointer(); + try + { + fd.seek(position); + return read(fd, dst, -1, nd, null); + } + finally + { + fd.seek(prevpos); + } + } + } if (dst.hasArray()) { @@ -109,7 +124,21 @@ class IOUtil { throws IOException { if (position != -1) - throw new ikvm.internal.NotYetImplementedError(); + { + synchronized (lock) + { + long prevpos = fd.getFilePointer(); + try + { + fd.seek(position); + return write(fd, src, -1, nd, null); + } + finally + { + fd.seek(prevpos); + } + } + } if (src.hasArray()) {