黑马程序员技术交流社区

标题: 输入文件流中,append和write的区别体现在什么地方 [打印本页]

作者: 新新人类嘿嘿嘿    时间: 2014-9-5 17:15
标题: 输入文件流中,append和write的区别体现在什么地方
我知道append应该是追加,write应该是覆盖。
但这个例子中
FileWriter fWriter = new FileWriter("e:\\aa.txt");
               
                BufferedWriter bwWriter=new BufferedWriter(fWriter);
               
               
                bwWriter.append("abc");//这里写write效果一样啊



有知道详细的吗?谢谢诸位

作者: 孤守星空    时间: 2014-9-5 17:36
本帖最后由 孤守星空 于 2014-9-5 17:42 编辑

以 out.append(c) 的形式调用此方法,行为与以下调用完全相同: out.write(c)
void
write(int c) 写入单个字符。

Writer
append(char)append(char c)
          将指定字符添加到此 writer。

可能这个就是区别
作者: 孤守星空    时间: 2014-9-5 17:42
擦,复制出来这么牛·····一个货带返回类型,write没有
作者: 新新人类嘿嘿嘿    时间: 2014-9-5 17:43
孤守星空 发表于 2014-9-5 17:42
擦,复制出来这么牛·····一个货带返回类型,write没有

就返回类型的区别是吧,我还以为是:append在文件已经存在情况下,再执行时继续追加到后面呢,结果发现不是
作者: xplcc    时间: 2014-9-5 18:04
append方法源码
  1.     public Writer append(CharSequence csq) throws IOException {
  2.         if (csq == null)
  3.             write("null");
  4.         else
  5.             write(csq.toString());
  6.             return this;
  7.     }
复制代码


writer方法源码
  1.     public void write(String str) throws IOException {
  2.         write(str, 0, str.length());
  3.     }
复制代码

作者: bullfrog    时间: 2014-9-5 18:35
CharSequence是个接口,String和StringBuilder都是它的subtype,而Sting对象是一旦建立,其内容就不可改变。 StringBuilder对象的内容却是可以改变的。
append里既可以传String,又可以传StringBuilder,会灵活一些。

另外就是源码里的当csq值为null时的区别了。




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