扩展Reader类:如何编写close()?

时间:2013-09-28 23:10:01

标签: java file-io

在Java中,我正在尝试为抽象Reader类编写子类。我正在尝试实现Reader的close()方法。我打算编写的子类Reader2将原始Reader(通过调用ReaderObj.read()获得)的输入转换为其他内容,以便在Reader2对象上调用read()将输出翻译后的字符。

例如,这会将所有小写的'a','b'和'c'字符转换为相应的大写字母,并保持其余字母不变:

Reader in = new InputStreamReader (System.in);
Reader2 translated = new Reader2(in, "abc", "ABC");
while (true) {
    int x = translated.read;
    if (x == -1) {
        break;
    }
    System.out.print((char x));
}

我已经实现了read(),但我不知道如何实现close()。

根据文档,close()方法应该关闭流并抛出IOException。但我不知道如何关闭流,或抛出IOException。我究竟如何重写close()?

1 个答案:

答案 0 :(得分:4)

Reader in = new InputStreamReader (System.in);
Reader2 translated = new Reader2(in, "abc", "ABC");

您创建一个输入流阅读器并将其传递给翻译的阅读器。要关闭Reader2实例,只需要在构造函数new Reader2(in, "abc", "ABC");传递给Reader2实例的Reader中调用close()方法。

public void close() { in.close(); }