这是从文本文件中读取的好方法吗?

Is this a good way of reading from a text file?

我一直在 Internet 上四处寻找,试图找出哪种方法是读取不太长的文本文件的最佳方式(此处的用例涉及小型 OpenGL 着色器)。我最终得到了这个:

private static String load(final String path)
{
    String text = null;

    try
    {
        final FileReader fileReader = new FileReader(path);
        fileReader.read(CharBuffer.wrap(text));

        // ...
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }

    return text;
}

在哪些情况下这段代码会导致效率低下?那是CharBuffer.wrap(text)好事吗?

我通常就这样滚。 CharBuffer.wrap(text) 似乎只能给你一个字符...... File Reader docs

BufferedReader br = new BufferedReader(fr); 
StringBuilder sb = new StringBuilder();
String s; 
while((s = br.readLine()) != null) { 
   sb.append(s);
} 
fr.close(); 
return sb.toString();

如果要逐行读取文件:

BufferedReader br = new BufferedReader(new FileReader(path));
try {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
    }
    String everything = sb.toString();
} finally {
    br.close();
}

如果您想一次性阅读完整文件:

String text=new String(Files.readAllBytes(...)) 或 Files.readAllLines(...)