2013-08-27 4 views
5

У меня есть простое Java-приложение, которое пытается скопировать файл через WAN (из Ирландии в Нью-Йорк).FileUtils.copyFile сбой для больших файлов

Недавно я изменил его, чтобы использовать FileUtils, потому что родная копия файла Java была слишком медленной. Я исследовал и обнаружил, что, поскольку Fileutils использует NIO, это лучше. Копия файла теперь работает большой, но иногда мне нужно скопировать очень большие файлы (> 200MB) и копия завершается с ошибкой:

java.io.IOException: Failed to copy full contents from... 

Я знаю, что ошибка означает, что размер файл назначение не то же самое, источник, поэтому изначально я понял, что это проблемы с сетью. Процесс пытается повторно копировать файл каждые пару часов, но он никогда не будет успешным. Тем не менее, когда я копирую файл вручную через проводника Windows, он работает нормально. Казалось бы, это исключает сеть ... но я не уверен.

Я искал, но не мог найти сообщений с той же проблемой. Любая помощь будет принята с благодарностью.

Спасибо!

Дополнение:
Я использую этот метод FileUtils:

public static void copyFile(java.io.File srcFile, java.io.File destFile) throws java.io.IOException 
+0

Существует несколько методов, называемых 'copyFile' в' FileUtils'. Если вы добавите часть своего кода, чтобы точно показать, что вы делаете, мы могли бы предоставить дополнительную помощь. –

+0

Возможный дубликат http://stackoverflow.com/questions/15805303/copying-a-file-using-fileutils-copyfile –

+0

Привет, я видел сообщение, которое вы упомянули, но которое связано с блокировкой файлов. Каждый раз, когда я копирую файл, у него есть уникальное имя, поэтому у меня нет этой проблемы. – Tony

ответ

3

Так что я нашел этот вопрос, чтобы быть на папку назначения. Существует процесс опроса, который, как предполагается, должен забрать файл после его копирования. Однако файл был перемещен до завершения копирования. Это, вероятно, не произойдет на диске Windows, потому что файл будет заблокирован (я тестировал локально, и я не мог удалить его во время копирования файла). Тем не менее, папка назначения - это установленная доля celerra. Процесс unix под капотом - это то, что захватывает файл ... Я думаю, все равно, если какой-то процесс Windows все еще пишет.

Спасибо за ваше время medPhys-pl!