黑马程序员技术交流社区

标题: IO流续写问题 [打印本页]

作者: 高志鹏    时间: 2012-11-14 21:15
标题: IO流续写问题
本帖最后由 高志鹏 于 2012-11-14 22:04 编辑

毕老师的代码:
  1. FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");
  2. FileReader fr = new FileReader("RuntimeDemo.java");
  3. int ch = 0;
  4. while((ch=fr.read())!=-1){  // fw.write(ch)}
复制代码
用注释注解的那一步,这是copy的第一种方法,是读一个字符,写一个字符,那这样的话,在读取了第一个字符后,再读取再写入,那应该就算是续写,但是毕老师却没有在后面加true而且也能够将整篇都读写出来。
不明白的地方就是:为什么不是续写也能够将整篇都写出。按理不应该只有一个字母么。

作者: 张学永    时间: 2012-11-14 21:27
while((ch=fr.read())!=-1){  // fw.write(ch)} 这是在一个程序里面进行的循环。会一直进行判断,没有到达结尾,就会一直写入。而你想表达的那种应该是重写文件吧?那种情况是一个main函数执行完毕,又执行了一次的话,就把整个文件给替换掉。
作者: 刘菲    时间: 2012-11-14 21:56
1.在创建FileWriter对象时,该对象一被初始化就必须要明确被操作的文件。
如果该文件不存,在则会在指定目录下创建一个,如果指定的文件已经存在,
则会重新创建一个,对原有的进行覆盖。
2.如果原有文件已经存在,在创建FileWriter对象时不想对其进行覆盖,而是
要对其进行续写,此时需要用true来标示。
3.你所说的是对同一个文件进行循环写入,就像是写入字符串一样,只不过
这是一个接着一个字符的写入。
作者: 高志鹏    时间: 2012-11-14 22:03
刘菲 发表于 2012-11-14 21:56
1.在创建FileWriter对象时,该对象一被初始化就必须要明确被操作的文件。
如果该文件不存,在则会在指定目 ...

是需要将流关掉后再开就算续写了,谢谢哈!
作者: 高志鹏    时间: 2012-11-14 22:03
张学永 发表于 2012-11-14 21:27
while((ch=fr.read())!=-1){  // fw.write(ch)} 这是在一个程序里面进行的循环。会一直进行判断,没有到达 ...

是需要将流关掉后再开就算续写了,谢谢哈!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2