2011-12-06 42 views
17

Tôi đã viết một chút mã để tải xuống một tập của một webcast mà tôi làm. Nó nhận được URL của tập và nhận được nơi để lưu nó. Tuy nhiên, nó chỉ tải xuống tối đa 16MB và sau đó tự động hủy. Tôi không hoàn toàn chắc chắn những gì giá trị để thay đổi để tăng này. Có thể, và ai đó có thể xin vui lòng chỉ cho tôi đi đúng hướng? Cảm ơn bạn!Tải xuống tệp bằng Java

Mã tải:

URL url = new URL(episode.getUrl()); 
    ReadableByteChannel rbc = Channels.newChannel(url.openStream()); 
    FileOutputStream fos = new FileOutputStream(episode.getLocalSave()); 
    fos.getChannel().transferFrom(rbc, 0, 1 << 24); 
+1

Để thảo luận thêm, hãy xem lại tham chiếu đến những gì có thể là đoạn mã ban đầu http://stackoverflow.com/a/921400/939250 –

Trả lời

40

Một cái nhìn lướt qua tài liệu của transferFrom:

public abstract long transferFrom(ReadableByteChannel channel, long position, long count) 

tốt.

Giá trị 1 < < 24 cho số lượng (từ câu hỏi ban đầu) bằng 16 triệu

Tôi đoán đó là câu trả lời cho câu hỏi của bạn :-)

+0

Bây giờ tôi cảm thấy ngớ ngẩn, cảm ơn! Tôi thực sự không bao giờ nghĩ đến việc tìm tài liệu, điều xấu của tôi. – Ziddia

+0

không có vấn đề ;-) Vui mừng khi đã giúp – emesx

+0

Chấp nhận câu trả lời có thể? – DagR

4

đây là một giải pháp:

import java.io.*; 
import java.net.*; 
public class DownloadFile 
{ 

    public static void main(String args[]) throws IOException 
    { 

     java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(episode.getUrl()).openStream()); 
     java.io.FileOutputStream fos = new java.io.FileOutputStream(episode.getLocalSave()); 
     java.io.BufferedOutputStream bout = new BufferedOutputStream(fos); 
     byte data[] = new byte[1024]; 
     int read; 
     while((read = in.read(data,0,1024))>=0) 
     { 
      bout.write(data, 0, read); 
     } 
     bout.close(); 
     in.close(); 
    } 
} 
Các vấn đề liên quan