如何从java

时间:2017-06-05 08:32:04

标签: java file

我有这个代码从类路径加载File a =其文本文件,我想将其读取为字符串 我正在使用的是:

 File file = new File(classLoader.getResource("sample.json").getFile());

我不想使用:

file.getAbsolutePath();

如何将此文本文件读入String?

更新 我找到了解决方案,您怎么看?

 ClassLoader classLoader = getClass().getClassLoader();
is = classLoader.getResourceAsStream("sample.json");
String txt = IOUtils.toString(is);

2 个答案:

答案 0 :(得分:1)

如果您使用的是Java 8,则可以使用它来读取文件中的行:

List<String> lines = Files.readallLines(file.toPath());

请参阅以下文档:

https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#readAllLines-java.nio.file.Path-

https://docs.oracle.com/javase/8/docs/api/java/io/File.html#toPath--

修改

要从您作为输入流获取的资源中进行阅读,您可以使用BufferedReaderInputStreamReader的组合:

String getText() throws IOException{
    StringBuilder txt = new StringBuilder();
    InputStream res = getClass().getClassLoader().getResourceAsStream("sample.json");
    try (BufferedReader br = new BufferedReader(new InputStreamReader(res))) {
        String sCurrentLine;
        while ((sCurrentLine = br.readLine()) != null) {
            txt.append(sCurrentLine + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return txt.toString();
}

希望这有帮助!

答案 1 :(得分:0)

您可以使用以下代码来读取文件对象。

public static void main(String[] args) {

        try (BufferedReader br = new BufferedReader(file)) {
            String sCurrentLine;
            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }