就目前的情况来看,这个问题并不适合我们的问答形式。我们希望答案能得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或广泛讨论。如果您觉得这个问题可以改进,并可能重新打开,请访问帮助中心寻求指导。
8年前关门了。
我真的不知道,为什么仅仅阅读一个包含很多类的文件就这么复杂和困难
输入流
数据输入流
输入流
缓冲读取器
下面的优点是什么?哲学在这里是什么?
private static String fileToString(String filename) throws IOException
{
InputStream resourceAsStream;
resourceAsStream = "".getClass().getResourceAsStream(filename);
DataInputStream in = new DataInputStream(resourceAsStream);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder builder = new StringBuilder();
String line;
// For every line in the file, append it to the string builder
while((line = reader.readLine()) != null)
{
builder.append(line);
}
return builder.toString();
}
5条答案
按热度按时间of1yzvn41#
既然你说了两次inputstream,实际上只有3件事;)但这是因为可以存储不同的文件(序列化对象、图像、文本等),所以它们都有一个共同的基础(inputstream)。然后,对于基本文本,有一个新类bufferedreader来处理这种特定类型的文件存储/读取。最后,bufferreader只是为了提高效率;你可能不想要它,所以它是可选的
还有,johan sjöberg是正确的,这里不需要datainputstream,只需执行以下操作:
ct2axkht2#
如果要读取有路径的文件,甚至可以执行以下操作:
注意:需要java 7+
v09wglhw3#
你可以把代码缩短一点,省去不必要的代码
DataInputStream
,您可以使用FileReader
取而代之的是:我还发现下面的一个班轮在http://rosettacode.org/wiki/read_entire_file#java:
1aaf6o9v4#
哲学是灵活的。使用不同类型的数据流,您可以轻松地读取和写入不同类型的数据,如字节、文本行或整个用户定义对象,一次一个从i/o源读取和写入。
从java教程-i/o流:
i/o流表示输入源或输出目标。流可以表示许多不同类型的源和目标,包括磁盘文件、设备、其他程序和内存阵列。
流支持许多不同类型的数据,包括简单字节、基本数据类型、本地化字符和对象。有些流只是传递数据;其他人以有用的方式操纵和转换数据。
从“教程:基本i/o”开始,全面了解java i/o。
如果您想看到如何简化java中各种数据类型的i/o的具体示例,我建议您看看sedgewick&wayne标准库中的in.java和out.java类。
w41d8nur5#
结帐项目lombok并不一定很难:通过简单地包含一个jar文件,读取一个文件可能是这样的: