THỰC ĐƠN

Sao chép tệp Java (thay đổi kích thước bộ đệm)

mục lục

Sao chép tệp Java (thay đổi kích thước bộ đệm)

Trong Java java.io.InputStream,java.io.OutputStream Tại
Giới thiệu một chương trình mẫu thực hiện xử lý sao chép bằng luồng đầu vào/đầu ra.
Trong xử lý sao chép bằng luồng, ngay cả các tệp lớn cũng có thể được sao chép tương đối nhanh bằng cách tăng kích thước bộ đệm đọc.
Trong chương trình mẫu, kích thước bộ đệm đọc dữ liệu có thể được chỉ định bằng một đối số.

Vùng đệm đọc được chỉ định được bảo mật trong vùng đệm JavaVM, do đó, việc sử dụng vùng đệm quá lớn sẽ dẫn đến hiệu quả kém. Vì vậy, chúng tôi cũng kiểm tra kích thước bộ đệm đọc dữ liệu hiệu quả khi sao chép tệp.

chương trình mẫu


chấp hành

Để sao chép tệp chương trình mẫu, chúng tôi đã chuẩn bị tệp 100 MB "100M.txt" ngay trong ổ C. Trong chương trình mẫu, C:\100M.txt , đọc dữ liệu theo đơn vị kích thước bộ đệm 1000KB. C:\a.txt Sao chép vào.

Mẫu được thực hiện trong môi trường sau.
Hệ điều hành: WindowsXP
CPU: Athlon 1.46GHz
Bộ nhớ: 1GB
JRE: 1.6.4

◆Ví dụ thực thi

/** * Ví dụ thực thi * @param args */ public static void main(String[] args) { try { copyStream("C:\\100M.txt", "C:\\a.txt",1000); } bắt (IOException e) { e.printStackTrace(); } }

◆Kết quả thực hiện


Thay đổi kích thước bộ đệm

Để kiểm tra kích thước bộ đệm đọc dữ liệu hiệu quả khi sao chép tệp, hãy sử dụng đối số thứ ba của copyStream làm
Kết quả xử lý bản sao tương tự ở các đơn vị 1KB, 100KB, 1000KB và 10000KB được tóm tắt dưới đây.



Mặc dù không thể kết luận chỉ từ các kết quả trên, nhưng nếu bạn chỉ định kích thước bộ đệm đọc dữ liệu theo đơn vị 1000KB,
Kết quả cho thấy nó hiệu quả về mặt sử dụng heap và thời gian xử lý trong quá trình xử lý sao chép.
Kết quả tương tự cũng đạt được ngay cả khi kích thước tệp tăng lên (khoảng 1GB).

Mặt khác, khi sao chép một tập tin nhỏ (khoảng 1MB trở xuống), việc tăng kích thước bộ đệm sẽ rất lãng phí, vì vậy tôi nghĩ tốt hơn nên chỉ định khoảng 100KB.

Sử dụng FileChannel để có tốc độ nhanh hơn


 java.io.InputStream,java.io.OutputStream
Xử lý sao chép rất quan trọng trong việc hiểu các luồng đầu vào/đầu ra, nhưng
I/O mới được giới thiệu trong J2SE1.4 java.nio.channels.FileChannel#transferTo
Bằng cách sử dụng phương pháp này, bạn có thể sao chép tập tin hiệu quả hơn.
Tiếp theo, tôi sẽ chỉ cho bạn cách sao chép tệp dễ dàng và nhanh chóng bằng FileChannel.
Sao chép tệp Java (dễ dàng và nhanh chóng)

  • URLをコピーしました!
mục lục