我试图将一个简单的文本文件读取为字符串。当然,有一种通常的方法来获取输入流并使用readLine()进行迭代并将内容读入String。
过去已经做过数百次,我只是想知道如何用最少的代码行做到这一点?Java中没有诸如String fileContents = XXX.readFile(myFile/*File*/)..的东西,而是像这样简单的东西吗?
如String fileContents = XXX.readFile(myFile/*File*/)
我知道有像Apache Commons IO这样的库可以提供这种简化,甚至我可以编写一个简单的Util类来做到这一点。但是我唯一想知道的是-这是一个如此频繁的操作,每个人都需要,那么Java为什么不提供这么简单的功能?真的没有某个地方可以使用某种默认或指定编码将文件读入字符串的方法吗?
是的,你可以一行执行此IOException操作(尽管对于强大的处理而言,你并不想这样做)。
IOException
String content = new Scanner(new File("filename")).useDelimiter("\\Z").next(); System.out.println(content);
这使用了一个java.util.Scanner,告诉它使用来分隔输入\Z,这是字符串锚点的结尾。这最终使输入具有一个实际的令牌,即整个文件,因此可以通过调用读取它next()。
java.util.Scanner
next()
有一个构造函数采用a File和a String charSetName(在许多其他重载中)。这两个构造函数可能会抛出FileNotFoundException,但是像所有Scanner方法一样,没有任何东西IOException可以抛出这些构造函数。
a File和a String charSetName
FileNotFoundException
你可以Scanner通过该ioException()方法本身查询是否IOException发生。你可能还需要明确close()的Scanner后你阅读的内容,因此,或许存储Scanner在一个局部变量的引用最好。
Scanner
ioException()
close()