2013-08-27 36 views
5

Tôi có một ứng dụng Java đơn giản đang cố sao chép một tệp qua mạng WAN (từ Ireland đến NY).FileUtils.copyFile không thành công cho các tệp lớn

Gần đây tôi đã sửa đổi nó để sử dụng FileUtils vì bản sao tệp Java gốc quá chậm. Tôi đã nghiên cứu và thấy rằng bởi vì Fileutils sử dụng NIO nó tốt hơn. Quá trình copy file hiện đang làm việc rất tốt nhưng đôi khi tôi cần phải sao chép các tập tin rất lớn (> 200MB) và bản sao không thành công với các lỗi:

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

Tôi biết lỗi có nghĩa là kích thước tập tin đích là không giống như các nguồn, do đó, ban đầu tôi figured nó là vấn đề mạng. Quá trình này sẽ cố gắng lặp lại để sao chép tệp mỗi vài giờ nhưng nó không bao giờ thành công. Tuy nhiên, khi tôi sao chép các tập tin bằng tay thông qua một khai thác Windows sau đó nó hoạt động tốt. Điều này dường như loại trừ mạng ... nhưng tôi không thực sự chắc chắn.

Tôi đã tìm kiếm nhưng không thể tìm thấy bất kỳ bài đăng nào có cùng vấn đề chính xác. Mọi sự trợ giúp sẽ rất được trân trọng.

Cảm ơn!

Addition:
Tôi đang sử dụng phương pháp FileUtils này:

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

Có một số phương thức được gọi là 'copyFile' trong 'FileUtils'. Nếu bạn thêm một số mã của bạn để hiển thị chính xác những gì bạn đang làm, chúng tôi có thể cung cấp thêm trợ giúp. –

+0

Có thể sao chép http://stackoverflow.com/questions/15805303/copying-a-file-using-fileutils-copyfile –

+0

Xin chào, tôi đã xem bài đăng bạn đã đề cập nhưng điều đó liên quan đến việc khóa tệp. Mỗi lần tôi sao chép tệp, nó có một tên duy nhất nên tôi không gặp phải vấn đề đó. – Tony

Trả lời

3

Vì vậy, tôi thấy vấn đề này để được vào thư mục đích. Có một quá trình bỏ phiếu giả sử để nhận tệp sau khi nó được sao chép. Tuy nhiên, tệp đã được di chuyển trước khi sao chép xong. Điều này có thể sẽ không xảy ra trên một ổ đĩa cửa sổ bởi vì các tập tin sẽ bị khóa (tôi thử nghiệm tại địa phương và tôi không thể xóa trong khi tập tin được sao chép). Tuy nhiên, thư mục đích là một chia sẻ một celerra chia sẻ. Quá trình unix dưới mui xe là những gì lấy các tập tin ... Tôi đoán nó không quan tâm nếu một số cửa sổ quá trình vẫn còn bằng văn bản cho nó.

Cảm ơn bạn đã dành thời gian medPhys-pl!

Các vấn đề liên quan