黑马程序员技术交流社区
标题:
io问题
[打印本页]
作者:
李文肖
时间:
2011-10-8 11:15
标题:
io问题
import java.io.*;
public class IOTest {
public static void main(String[] args) throws Exception {
File f1 = new File("x1.txt");
File f2 = new File("x2.txt");
InputStream is = new FileInputStream(f1);
OutputStream os = new FileOutputStream(f2, true);
byte[] buf = new byte[1024];
int len = 0;
while((len=is.read(buf)) != 0) {
if(len > 0) {
os.write(buf,0,len);
}
if(f2.length() == f1.length()*3) {
break;
}
}
os.close();
is.close();
}
}
x1.txt的内容如下:
something is wrong.
x2.txt的内容是什么啊?为什么?
每次读指针读到末尾会自动跳到0位置?
作者:
林国锋
时间:
2011-10-8 11:25
x2.txt的内容的内容也是something is wrong,因为1024空间的字节一次就把文件读完了
每次读指针读到末尾不会自动跳到0位置,因为while判断len=-1的时候就退出循环了
作者:
王家虎
时间:
2011-10-8 11:42
本帖最后由 王家虎 于 2011-10-8 11:46 编辑
x2.txt的内容是:something is wrong.
原因是if(len > 0) {
os.write(buf,0,len);
}
先执行,执行完之后才执行 if(f2.length() == f1.length()*3) {
break;
}
由于前一个if已经执行完了,所以后一个的if随意break,但已经阻止不了了。
指针是按照顺序从前到后依次读取,当读到最后一个字节时如果再往下读就会返回-1,不会回到0的位置。
作者:
姚志华
时间:
2011-10-8 13:06
王家虎 发表于 2011-10-8 11:42
x2.txt的内容是:something is wrong.
原因是if(len > 0) {
os.write(buf,0,len);
同意这个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2