2011-01-15 57 views
5

Tôi đã thử một vài byte trong khi phương pháp lặp và phương thức dưới đây:cách tải xuống tệp trong java?

try { 
    URL dl = null; 
    dl = new URL("http://ds-forums.com/kyle-tests/uploads/Screenshots.zip"); 
    ReadableByteChannel rbc = Channels.newChannel(dl.openStream()); 
    FileOutputStream fos = new FileOutputStream(fileName + "Screenshots.zip"); 
    fos.getChannel().transferFrom(rbc, 0, 1 << 24); 
    System.out.println(fos.getChannel().size()); 
    fos.close(); 
    rbc.close(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

}

Nhưng các phương pháp chỉ không phải là rất hiệu quả/nhanh. Tôi đã tìm hiểu về Utils apache và tôi đang sử dụng

IOUtils.copy(new URL("http://ds-forums.com/kyle-tests/uploads/Screenshots.zip").openStream(), new FileOutputStream(System.getProperty("user.home").replace("\\", "/") + "/Desktop/Screenshots.zip")); 

nhưng đó là phương pháp tốt nhất? Tôi rất bối rối ngay bây giờ phương pháp nào là tốt nhất để tải xuống tệp nén 26mb. (Tệp ở trên chỉ là 1mb Tôi là phương pháp thử nghiệm)

Tôi hỏi chỉ để xem liệu có ai đó đã từng gặp sự cố này và có thể họ có thể giúp tôi không. Cảm ơn.

+0

Tôi khuyên bạn nên tải xuống tệp có nhiều hơn một chuỗi. Hãy xem mã nguồn jDownloader. – fardjad

Trả lời

21

Nếu bạn đã có Commons IO trên classpath sử dụng

org.apache.commons.io.FileUtils.copyURLToFile(URL, File) 

Nó sẽ chăm sóc của tất cả các vệ dòng khai mạc và bế mạc và mkdirs kêu gọi phụ huynh của tập tin.