将文件读入String最简单的方法是什么?

问题:

我正在尝试将一个简单的文本文件读入一个String。当然,通过使用readLine()和读取内容到String来获取输入流和迭代的通常方式。
过去几百次,我只是想知道如何在最低限度的代码行这样做?在像String fileContents = XXX.readFile(myFile/*File*/)这样的java中没有什么东西吗?
我知道有像Apache Commons IO这样的图书馆提供这样的简化,甚至可以写一个简单的Util类来做到这一点。但是我想知道的是 – 这是一个非常频繁的操作,每个人都需要,为什么Java不提供这样简单的功能?有没有真正的单一方法在某个地方读取一个文件到字符串与一些默认或指定的编码?

回答:

是的,您可以在一行中执行此操作(尽管对于您不想要的强大的IOException处理)。

String content = new Scanner(new File("filename")).useDelimiter("\\Z").next();
System.out.println(content);

这使用java.util.Scanner,告诉它用\Z定义输入,这是字符串锚的结尾。这最终使得输入具有一个实际的令牌,这是整个文件,因此可以通过一次调用next()来读取它们。
a constructor需要FileString charSetName(在许多其他重载中)。这两个构造函数可以抛出FileNotFoundException,但是像所有Scanner方法一样,不能抛出IOException超出这些构造函数。
如果发生IOException,您可以通过ioException()方法查询Scanner本身。您可能还需要在阅读内容后明确close() Scanner,因此可能将Scanner引用存储在局部变量中是最好的。

也可以看看

相关问题

第三方库选项

为了完整,如果您拥有这些非常有信誉和非常有用的第三方库,这些是一些非常好的选择:

番石榴

 com.google.common.io.Files包含许多有用的方法。相关的有:

Apache Commons / IO

 org.apache.commons.io.IOUtils也提供类似的功能:

  •  String toString(InputStream, String encoding)
     

    • Using the specified character encoding, gets the contents of an InputStream as a String
  •  List readLines(InputStream, String encoding)
     

    • … as a (raw) List of String, one entry per line

相关问题

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What is simplest way to read a file into String?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 8 = 2