我正在尝试使用BufferedReader读取Java中文本文件的内容。但是,仅第一行被检索。
这是代码:
public String myFile(String file)
{
String dataInTextFile = "";
try
{
BufferedReader fileInput = new BufferedReader(new FileReader(file));
try
{
dataInTextFile = fileInput.readLine();
}
catch (IOException e)
{
System.out.println(e);
}
}
catch (FileNotFoundException e)
{
System.out.println(e);
}
return dataInTextFile;
}
答案 0 :(得分:1)
这是因为您的代码旨在仅读取一行。您需要连续确定readLine()是否产生结果,否则,请停止读取文件。
private String read(String file) throws IOException {
String dataInTextFile = "";
try (BufferedReader fileInput = new BufferedReader(new FileReader(file))) {
String line;
while ((line = fileInput.readLine()) != null) {
// process line
}
}
return dataInTextFile;
}
答案 1 :(得分:1)
您只阅读第一行。
try
{
dataInTextFile = fileInput.readLine(); ----> One line read.
}
catch (IOException e)
{
System.out.println(e);
}
应该是-
while ((dataInTextFile = fileInput.readLine()) != null) {
System.out.println(dataInTextFile );
}
答案 2 :(得分:0)
实际上,bufferReader.readLine()给您一行,它移动到下一行从光标开始直到文件末尾的位置(在行末,因为它无法再读取其他行,它返回null)。>
您可以像这样通过bufferReader进行读取
public String readFile(String filePath) {
StringBuilder contentString = new StringBuilder();
try {
BufferedReader bufferReader = new BufferedReader(new FileReader(filePath));
String line = bufferReader.readLine();
while(line != null){
contentStringString.append(line);
line = bufferReader.readLine();
}
}
catch(Exception e) {
e.printStackTrace();
}
return contentString.toString();
}