FileUtils.copyFile() throws IOException when copying large files to a shared
directory (on Windows)
---------------------------------------------------------------------------------------------------
Key: IO-266
URL: https://issues.apache.org/jira/browse/IO-266
Project: Commons IO
Issue Type: Bug
Reporter: Igor Smereka
java.io.IOException: Insufficient system resources exist to complete the
requested service
at sun.nio.ch.FileDispatcher.pwrite0(Native Method)
at sun.nio.ch.FileDispatcher.pwrite(Unknown Source)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.write(Unknown Source)
at sun.nio.ch.FileChannelImpl.write(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFrom(Unknown Source)
at org.apache.commons.io.FileUtils.doCopyFile(FileUtils.java:813)
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:783)
at org.test.igor.TestFileUtils.main(TestFileUtils.java:55)
NOTE: the issue is cased by the function doCopyFile(File srcFile, File
destFile, boolean preserveFileDate) using hardcoded data chunks of FIFTY_MB in
the transferFrom() call.
Reducing this chunk from 50M to 31M solves the issue for my situation (32M
still fails).
Here is a test program to reproduce the issue:
package org.test.igor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
public class TestFileUtils {
public static void main(String[] args){
File src = new File("D:\\2011.1-dev\\test\\test");
File dest = new File("\\\\ismerek1\\Shared");
String filename = "jdk-6u19-windows-x64.exe";
File file = new File(src, filename);
File toFile = new File(dest, filename);
try {
FileUtils.copyFile(file, toFile, true);
System.out.println("Successful copy");
}
catch (IOException e1) {
e1.printStackTrace();
}
}
}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira