使用 Java 从文本文件中读取数据
我需要使用 Java 逐行读取文本文件。我使用 FileInputStream 的 available() 方法来检查和循环文件。但是在读取时,循环在最后一行之前的行之后终止。 即,如果文件有 10 行,则循环仅读取前 9 行。 使用的片段:
while(fis.available() > 0)
{
char c = (char)fis.read();
.....
.....
}
I need to read a text file line by line using Java. I use available()
method of FileInputStream
to check and loop over the file. But while reading, the loop terminates after the line before the last one. i.e., if the file has 10 lines, the loop reads only the first 9 lines.
Snippet used :
while(fis.available() > 0)
{
char c = (char)fis.read();
.....
.....
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(16)
您不应该使用
available()
。它不提供任何保证。来自 API 文档available()
:您可能想要使用类似的东西
(取自 http://www.exampledepot. com/egs/java.io/ReadLinesFromFile.html)
You should not use
available()
. It gives no guarantees what so ever. From the API docs ofavailable()
:You would probably want to use something like
(taken from http://www.exampledepot.com/egs/java.io/ReadLinesFromFile.html)
使用扫描仪怎么样?我认为使用扫描仪更容易
在此处了解有关 Java IO 的更多信息
How about using Scanner? I think using Scanner is easier
Read more about Java IO here
如果您想逐行阅读,请使用
BufferedReader
。它有一个 readLine() 方法,该方法以字符串形式返回该行,如果到达文件末尾则返回 null。所以你可以这样做:(请注意,此代码不处理异常或关闭流等)
If you want to read line-by-line, use a
BufferedReader
. It has areadLine()
method which returns the line as a String, or null if the end of the file has been reached. So you can do something like:(Note that this code doesn't handle exceptions or close the stream, etc)
您可以尝试来自 org.apache.commons.io.FileUtils 的 FileUtils,尝试从这里下载 jar
您可以使用以下方法:
FileUtils.readFileToString("yourFileName");
希望它能帮助你..
You can try FileUtils from org.apache.commons.io.FileUtils, try downloading jar from here
and you can use the following method:
FileUtils.readFileToString("yourFileName");
Hope it helps you..
您的代码跳过最后一行的原因是因为您将
fis.available() > > 0
而不是fis.available() >= 0
The reason your code skipped the last line was because you put
fis.available() > 0
instead offis.available() >= 0
在Java 8中,您可以使用
Files.lines
和collect
轻松将文本文件转换为带有流的字符串列表:In Java 8 you could easily turn your text file into a List of Strings with streams by using
Files.lines
andcollect
:只需在 Google 中搜索一下即可尝试此操作
Try this just a little search in Google
尝试像这样使用 java.io.BufferedReader 。
Try using java.io.BufferedReader like this.
是的,应该使用缓冲来获得更好的性能。
使用 BufferedReader 或 byte[] 来存储临时数据。
谢谢。
Yes, buffering should be used for better performance.
Use BufferedReader OR byte[] to store your temp data.
thanks.
用户扫描仪应该可以工作
user scanner it should work
这对我有用
This worked for me
JAVA读取文件的简单代码:
Simple code for reading file in JAVA: