我有这个代码从类路径加载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);
答案 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--
修改强>
要从您作为输入流获取的资源中进行阅读,您可以使用BufferedReader
和InputStreamReader
的组合:
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();
}
}