У меня есть код для копирования файла в другое место.
public static void copyFile(String sourceDest, String newDest) throws IOException {
File sourceFile = new File(sourceDest);
File destFile = new File(newDest);
if (!destFile.exists()) {
destFile.createNewFile();
}
FileChannel source = null;
FileChannel destination = null;
try {
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
destination.transferFrom(source, 0, source.size());
} finally {
if (source != null) {
source.close();
}
if (destination != null) {
destination.close();
}
}
}
}
При копировании небольших фрагментов, скажем, 300-400 Мб, все работает как по волшебству.Но когда я попытался скопировать файл размером 1,5 Гб, это не удалось.Стек:
Выполнено: 12.01.2011 11:16:36 Основной FileCopier SEVERE: Возникла исключительная ситуация при копировании файла.Попробуйте снова.java.io.IOException: ошибка карты в sun.nio.ch.FileChannelImpl.map (FileChannelImpl.java:748) в файле sun.nio.ch.FileChannelImpl.transferFromFileChannel (FileChannelImpl.java:527) в файле sun.nio.ch.Cile.transferFrom (FileChannelImpl.java:590) в FileCopier.copyFile (FileCopier.java:64) в FileCopier.main (FileCopier.java:27) Причина: java.lang.OutOfMemoryError: Ошибка карты в sun.nio.ch.FileChan.map0 (собственный метод) в sun.nio.ch.FileChannelImpl.map (FileChannelImpl.java:745) ... еще 4 УСТРОЙСТВА УСПЕШНО (общее время: 0 секунд)
У меня неттесно сотрудничал с NIO.Не могли бы вы помочь мне?Заранее большое спасибо.