A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李文肖 黑马帝   /  2011-10-8 11:15  /  2009 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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位置?

3 个回复

倒序浏览
x2.txt的内容的内容也是something is wrong,因为1024空间的字节一次就把文件读完了

每次读指针读到末尾不会自动跳到0位置,因为while判断len=-1的时候就退出循环了
回复 使用道具 举报
本帖最后由 王家虎 于 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 11:42
x2.txt的内容是:something is wrong.
原因是if(len > 0) {
                os.write(buf,0,len);

同意这个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马