diff --git a/jdk/make/common/Release.gmk b/jdk/make/common/Release.gmk index ab9f557eef28ec2db54ee3c51772095d1c6ca1ca..cf16ea8dd3ad35fb5beab0c74b4c7bf33e62b1ae 100644 --- a/jdk/make/common/Release.gmk +++ b/jdk/make/common/Release.gmk @@ -549,7 +549,6 @@ DIRDIFF_JARFILE = $(BUILDTOOLJARDIR)/dirdiff.jar ###################################################### # List of directories in classes directory that should NOT be in rt.jar -# sun/nio/cs/ext/ will go into charsets.jar ###################################################### NOT_RT_JAR_LIST = $(ABS_TEMPDIR)/not_rt_jar.list @@ -572,7 +571,6 @@ $(NOT_RT_JAR_LIST): FRC $(ECHO) "META-INF/services/com.sun.tools.xjc.Plugin" >> $@ $(ECHO) "com/sun/tools/" >> $@ $(ECHO) "sun/jvmstat/" >> $@ - $(ECHO) "sun/nio/cs/ext/" >> $@ $(ECHO) "sun/rmi/rmic/" >> $@ $(ECHO) "sun/tools/asm/" >> $@ $(ECHO) "sun/tools/java/" >> $@ diff --git a/jdk/test/java/nio/channels/FileChannel/Transfer.java b/jdk/test/java/nio/channels/FileChannel/Transfer.java index bee8401a1e57d96afe54b56112f6651ecffd01e9..a6f96b83e8769c833fabb9452de93ba84c4862e7 100644 --- a/jdk/test/java/nio/channels/FileChannel/Transfer.java +++ b/jdk/test/java/nio/channels/FileChannel/Transfer.java @@ -25,7 +25,6 @@ * @bug 4434723 4482726 4559072 4638365 4795550 5081340 5103988 6253145 * @summary Test FileChannel.transferFrom and transferTo * @library .. - * @run main/timeout=240 Transfer */ import java.io.*; @@ -33,6 +32,8 @@ import java.net.*; import java.nio.*; import java.nio.channels.*; import java.nio.channels.spi.SelectorProvider; +import java.nio.file.StandardOpenOption; +import java.nio.file.FileAlreadyExistsException; import java.util.Random; @@ -262,23 +263,30 @@ public class Transfer { // Test transferFrom with large file public static void xferTest05() throws Exception { - // Linux can't handle the really large file sizes for a - // truncate or a positional write - String osName = System.getProperty("os.name"); - if (osName.startsWith("Linux")) - return; - // Create a source file & large sink file for the test File source = File.createTempFile("blech", null); source.deleteOnExit(); initTestFile(source, 100); - File sink = File.createTempFile("sink", null); + // Create the sink file as a sparse file if possible + File sink = null; + FileChannel fc = null; + while (fc == null) { + sink = File.createTempFile("sink", null); + // re-create as a sparse file + sink.toPath().delete(); + try { + fc = FileChannel.open(sink.toPath(), + StandardOpenOption.CREATE_NEW, + StandardOpenOption.WRITE, + StandardOpenOption.SPARSE); + } catch (FileAlreadyExistsException ignore) { + // someone else got it + } + } sink.deleteOnExit(); long testSize = ((long)Integer.MAX_VALUE) * 2; - RandomAccessFile raf = new RandomAccessFile(sink, "rw"); - FileChannel fc = raf.getChannel(); try { fc.write(ByteBuffer.wrap("Use the source!".getBytes()), testSize - 40); @@ -288,24 +296,26 @@ public class Transfer { return; } finally { fc.close(); - raf.close(); } // Get new channels for the source and sink and attempt transfer - FileInputStream fis = new FileInputStream(source); - FileChannel sourceChannel = fis.getChannel(); - - raf = new RandomAccessFile(sink, "rw"); - FileChannel sinkChannel = raf.getChannel(); - - long bytesWritten = sinkChannel.transferFrom(sourceChannel, - testSize - 40, 10); - if (bytesWritten != 10) { - throw new RuntimeException("Transfer test 5 failed " + - bytesWritten); + FileChannel sourceChannel = new FileInputStream(source).getChannel(); + try { + FileChannel sinkChannel = new RandomAccessFile(sink, "rw").getChannel(); + try { + long bytesWritten = sinkChannel.transferFrom(sourceChannel, + testSize - 40, 10); + if (bytesWritten != 10) { + throw new RuntimeException("Transfer test 5 failed " + + bytesWritten); + } + } finally { + sinkChannel.close(); + } + } finally { + sourceChannel.close(); } - sourceChannel.close(); - sinkChannel.close(); + source.delete(); sink.delete(); }