所有的一种写方法,FilterWriter

时间:2014-05-18 08:37:39

标签: java java-io

我正在实施自己的FilterWriter。是否有一个FilterWriter的write / append方法,所有其他的write / append实现都会调用它? 所以我不必覆盖所有方法,只需覆盖例如`void write(int c)。

3 个答案:

答案 0 :(得分:2)

如果扩展FilterWriter,则需要覆盖其三种方法:

public void write(char[] buffer, int offset, int count) throws IOException;
public void write(int oneChar) throws IOException;
public void write(String str, int offset, int count) throws IOException;

如果实现Writer类,则需要覆盖单个方法。

public abstract void write(char[] buf, int offset, int count) throws IOException;

您可以在Java源代码中找到此方法。

答案 1 :(得分:1)

  

是否有一个FilterWriter的写入/追加方法   所有其他写/附加实现都要求它?

是的,write(char[] buf, int offset, int count)。但是不建议只使用这个,因为如果你想要像int那样写基元,你必须将其转换为char-Array。 这就是为什么像write(int)这样的其他方法可以进行投射。否则你将不得不编写这样的代码;

write(new char[]{(char)myInt, ...}, 0, 1);

如果你想写一些原语和字符串,情况会更糟。

append(...)方法只调用write(...)方法。像这样:

public Writer append(CharSequence csq) throws IOException {
    if (csq == null)
        write("null");
    else
        write(csq.toString());
   return this;
}

这些也应该被覆盖 简而言之,如果您只使用一个writeappend方法,最后您会遇到更多代码和麻烦。在设计课程时,更好地正确实施它们。

答案 2 :(得分:-1)

将true作为第二个参数传递给FileWriter以打开"追加"模式。

fout = new FileWriter("filename.txt", true);

FileWriter使用参考