[英]What is java.io.Reader transferTo(java.io.Writer) method in Java 10 ? Is there a similar method for InputStream?
[英]What is the difference between append and write methods of java.io.writer?
java.io.Writer接口有两个方法 append 和 write。 这两者之间有什么区别? 它甚至说
调用这种形式
out.append(c)
的方法的行为与调用out.write(c)
) 的行为完全相同
那么有两个方法名称变体的原因是什么?
append()和write()之间存在细微差别。 所有这些都可以通过阅读Javadocs来解决。 暗示。 ;)
void
write是在CharSequence可用之前创建的旧样式格式。
这些方法是重载的,所以有一个
write(int)
其中int
被强制转换为char。 append(char)
必须是char类型。 write(char[] chars)
接受一个char数组,没有等效的append()。 可能符合Appendable接口: http : //download.oracle.com/javase/6/docs/api/java/lang/Appendable.html
Append()
可以采用CharSequence
,而write()
采用String
。
由于String
是CharSequence
的实现,因此您还可以将String
传递给append()
。 但是你也可以传递一个StringBuilder
或StringBuffer
来append
,你不能用write()
来做。
正如您从文档中看到的那样,append还会返回您刚刚编写的Writer,以便您可以执行多个附加,例如:
out.append(a).append(b).append(c)
Writer.append(c)
返回Writer实例。 因此,您可以链接多个要追加的调用,例如out.append("Hello").append("World")
;
在我看来,它是java.io.Writer
实现的Appendable
接口的副产品,以提供与java.util.Formatter
兼容性。 如您所述,文档指出对于java.io.Writer
,两种方法之间没有实际区别。
上面提到的是真实的。 BufferWiter
的append()
方法的不同风格返回一个Writer
,它实现了Appendable
等,从而使您能够进行链式调用。 此外, append()
允许您传递CharSequence
和char
,而不是像write()
方法那样传递int
、 String
或char[]
。 全对了。
但是,正如问题所述,需要指出的一个重要问题是append()
的基本行为仍然与write()
的基本行为相同。 尽管命名法有些误导,现有文件内容将被覆盖,而不是附加,除非您的FileWriter
以其他方式实例化:
try (var writer = new BufferedWriter(new FileWriter("myFile.txt", true));) {
writer.append("XXX").append("ZZZ");
}
从这个意义上说,我认为最初的问题提出了一个有效的观点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.