日期:2014-05-20  浏览次数:20754 次

关于文件读写的疑问
byte[] buffer = new byte[4 * 1024];
while (-1 != is.read(buffer)) {
os.write(buffer);
System.out.println("a");
}

is是一个网上下载输入流,os是指向文件的输出流,我不明白的是为什么只输出一次“a”?
is的read()函数难道只执行了一次?不可能吧,下载的文件起码有2M。
那位大神能指导一下啊!!小弟感激不尽
buffer 文件

------解决方案--------------------
public static void main(String[] args) throws Exception {
byte[] buffer = new byte[4 * 1024];
InputStream is=new ByteArrayInputStream(buffer);
OutputStream os=new FileOutputStream("d:/e.txt");
int i=is.read();
while (i!=-1) {
os.write(i);
System.out.println("a");
}

------解决方案--------------------
不知道楼主怎么测试的

public static void main(String[] args) {
try {
BufferedInputStream is=new BufferedInputStream(new FileInputStream(new File("D:\\colorsize.txt")));
byte[] buffer = new byte[4 * 1024];
while (-1 != is.read(buffer)) {

System.out.println("a");
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

12K的文件,本地。输出3次
24K的,输出6次,正常