如何在Java中将字符串转换为Reader

59

我有一个读取文件并返回字符串的方法,但我想要返回一个 reader。我想要将字符串转换为 reader,或者我想要读取文件并返回 reader。我该如何做?


String Reader 工作正常。我使用了 FileReader 而不是编写自己的方法,这更简单。(Reader)new FileReader(filePath); - Arasu
4个回答

115

使用 java.io.StringReader: return new StringReader(string);

下次需要读取器时,可以查看 Reader 类的 "Direct known subclasses"。对于 InputStream 等也是如此。开始的地方是 javadoc - 它包含了相当多有用的信息。

但对于您手头的任务,最好遵循 Jon Lin 的建议,简单地使用 FileReader。没有必要通过 String 进行操作。(对于这一点,同样适用于我在上一段中提到的建议)


1
我想补充一点,如果你正在使用Eclipse,只需在光标停留在类型(例如Reader)上时按下F4,就可以轻松地拉出该类型的所有已知子类的树形结构。我认为其他集成开发环境也会有类似的功能。在这些情况下非常有帮助。 - hendalst
这回答了标题中的“字面”问题,这可能是90%人来这里的原因。但是**@JonLin**的答案对于OP描述的特定情况有更好的解决方案。 - Lukas Knuth

11

或者你可以简单地创建一个FileReader并返回它。详情请查看


他说他有一个读取文件的方法,想要返回一个Reader而不是String。 - Jon Lin

10
你可以使用来自java.io包的StringReader类。
String stringToBeParsed = "The quick brown fox jumped over the lazy dog";
StringReader reader = new StringReader(stringToBeParsed);

22
jumpS”不是“jumpED”,否则就不会使用所有26个字母了;-)。翻译:如果使用“jumpED”而不是“jumpS”,那么并不能用到全部的26个字母。;-) - Tomasz Nurkiewicz

0

试试这个示例代码,

FileInputStream in = null;
    StringBuilder sb = new StringBuilder();
    String tempString = null;
    Reader initialReader;
    try {
        in = new FileInputStream(filename);
        initialReader = new InputStreamReader(in);

        char[] arr = new char[8 * 1024];
        StringBuilder buffer = new StringBuilder();
        int numCharsRead;
        while ((numCharsRead = initialReader.read(arr, 0, arr.length)) != -1) {
            buffer.append(arr, 0, numCharsRead);
        }
        String targetString = buffer.toString();

        result = IOUtils.toByteArray(targetString);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接