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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 939676244 中级黑马   /  2013-9-20 23:51  /  1919 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 939676244 于 2013-9-21 21:31 编辑

public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub
                copy_1();
        }
                public static void copy_1()throws IOException
                {
                FileWriter fw = new  FileWriter("Democopy.txt");
                FileReader fr = new FileReader("demo.txt");
                int ch = 0;
                while ((ch=fr.read())!=-1);
                {
                        fw.write(ch);
       
                       
                }
                fw.close();
                fr.close();
        }

}


运行之后的结果是创建一个文件,文件内容是一个 ?  什么情况

6 个回复

倒序浏览
ch=fr.read()这里错了. read()方法返回最后下一个字符.完全获取不到demo.txt文件中的字符数据.要这样写
fr.read(char[] chars);用chars字符数组去接受,然后在fw.write(chars);这样才能将字符数据写到democopy.txt文件里.
回复 使用道具 举报
这个例子是使用File字符流复制文件,运行结果为将demo.txt复制一份为Democopy.txt,在加上Buffered缓存效率就更好了
while语句后面怎么出来个分号
回复 使用道具 举报
aspoMAN 发表于 2013-9-21 00:15
这个例子是使用File字符流复制文件,运行结果为将demo.txt复制一份为Democopy.txt,在加上Buffered缓存效率 ...

额,分号去掉就可以了, 我去{:soso_e103:}
回复 使用道具 举报
你应该是对read方法的用法理解的不是太清楚。
int read(byte[] buf)
read方法从文件中读取数据,并存入一个字节数组中,但要返回该数据的大小
然后这里的write方法里只能放字符串
正确的代码应该是这样的:
public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub
                copy_1();
        }
                public static void copy_1()throws IOException
                {
                FileWriter fw = new  FileWriter("Democopy.txt");
                FileReader fr = new FileReader("demo.txt");
                int ch = 0;
                byte[] buf = new byte[1024];
                while ((ch=fr.read(buf))!=-1);
                {
                        fw.write(new String(buf, 0, ch));
        
                        
                }
                fw.close();
                fr.close();
        }

}

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 赞一个!

查看全部评分

回复 使用道具 举报
肯定是一个 “?” 啊!这是由于你这行代码 while ((ch=fr.read())!=-1);  多了一个分号 “;”,while循环结束时只把 -1 写到文件里面去了,应该把这个去掉、、、刚测试完毕,去掉 “;”后可以得出你想要的结果、、、、
回复 使用道具 举报
尽量在代码块里显示代码,这样更利于交流
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马