黑马程序员技术交流社区
标题:
一串代码不知道哪出的问题
[打印本页]
作者:
939676244
时间:
2013-9-20 23:51
标题:
一串代码不知道哪出的问题
本帖最后由 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();
}
}
运行之后的结果是创建一个文件,文件内容是一个 ? 什么情况
作者:
straw
时间:
2013-9-21 00:10
ch=fr.read()这里错了. read()方法返回最后下一个字符.完全获取不到demo.txt文件中的字符数据.要这样写
fr.read(char[] chars);用chars字符数组去接受,然后在fw.write(chars);这样才能将字符数据写到democopy.txt文件里.
作者:
aspoMAN
时间:
2013-9-21 00:15
这个例子是使用File字符流复制文件,运行结果为将demo.txt复制一份为Democopy.txt,在加上Buffered缓存效率就更好了
while语句后面怎么出来个分号
作者:
939676244
时间:
2013-9-21 00:22
aspoMAN 发表于 2013-9-21 00:15
这个例子是使用File字符流复制文件,运行结果为将demo.txt复制一份为Democopy.txt,在加上Buffered缓存效率 ...
额,分号去掉就可以了, 我去{:soso_e103:}
作者:
陶智第
时间:
2013-9-21 09:11
你应该是对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();
}
}
作者:
yting_xmei1129
时间:
2013-9-21 10:26
肯定是一个 “?” 啊!这是由于你这行代码 while ((ch=fr.read())!=-1); 多了一个分号 “;”,while循环结束时只把 -1 写到文件里面去了,应该把这个去掉、、、刚测试完毕,去掉 “;”后可以得出你想要的结果、、、、
作者:
黄文伯
时间:
2013-9-21 19:00
尽量在代码块里显示代码,这样更利于交流
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2