这是一个关于设置缓冲区的字节数组大小以从URL流写入()本地文件的问题:
byte[] buffer = new byte[26];
26似乎是神奇的数字。如果我把任何东西放在26以上(比如1024),它仍然只会将前26个字符写入文件。为什么?请注意,我并没有尝试编写整个流(使用while循环),只是想弄清楚为什么最大的块只有26个字符长。
这里是完整的代码:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadNetworkFile {
public static void main(String[] args){
File f2 = new File("target3.txt");
try {
OutputStream out = new FileOutputStream(f2);
URL url = new URL("http://services.explorecalifornia.org/rss/tours.php");
InputStream stream = url.openStream();
byte[] buffer = new byte[1024];
int len=stream.read(buffer);
out.write(buffer,0,len);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
你错过了神奇的成分:while-loop
。
您需要从网上阅读并写入文件而len>那你就完了。