关于Java:Java——直接读取文件而不在本地下载和存储

Java - directly reading a file without downloading and storing locally

本问题已经有最佳答案,请猛点这里访问。

我想直接读取一个文件,将其放入一个字符串,而不在本地存储该文件。我以前在一个旧项目中这样做,但是我已经没有源代码了。我以前可以通过这种方式获取我网站的来源。

但是,我不记得是通过"inputstream-to-string-array of lines-to-string"完成的,还是直接将其读取到字符串中。

这有什么作用,还是我记错了?

(注:此函数将是与file_get_contents($path)等效的php函数)


查看ApacheCommonsIO和您的用例fileutils.readfiletoString(文件文件)(不应该很难从路径中获取文件)。

您可以使用库或查看代码-因为这是打开的。


没有直接的方法可以将File读取到String中。

但有一种快速的替代方法——将File读取为字节数组并将其转换为字符串。

未经测试的:

1
2
3
4
5
6
7
File f = new File("/foo/bar");
InputStream fStream = new FileInputStream(f);
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
for(int data = fStream.read(); data > -1; data = fStream.read()) {
  b.write(data);
}
String theResult = new String(bStream.toByteArray(),"UTF-8");


您需要使用InputStreamReader将二进制输入流转换为适合读取文本的Reader

在那之后,你需要读到最后的读者。

就我个人而言,我会用番石榴做所有这些事情,番石榴对于这类事情有方便的方法,例如CharStreams.toString(Readable)

当您创建InputStreamReader时,请确保提供适当的字符编码—如果不提供,您将得到垃圾文本(例如,像尝试播放MP3文件一样,它是一个wav)。