因为每次创建项目时我都懒得重写文件管理器,所以我正在创建一个文件IO库。当我运行它时,我得到:
null
null
null
它查找文件中有多少行,但将它们全部置为空。我该如何解决这个问题?
档案管理员:
package textfiles;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
public class KezelFile {
private String path;
BufferedReader buff;
public KezelFile(String filePath) throws IOException {
path = filePath;
openFile();
}
public void openFile() throws IOException {
FileReader read = new FileReader(path);
buff = new BufferedReader(read);
}
public String[] toStringArray() throws IOException {
int numberOfLines = readLines();
String[] textData = new String[numberOfLines];
int i;
for (i=0; i < numberOfLines; i++) {
textData[i] = buff.readLine();
}
return textData;
}
int readLines() throws IOException {
String lines;
int noLines = 0;
while ((lines = buff.readLine()) != null) {
noLines++;
}
return noLines;
}
public void closeFile() throws IOException {
buff.close();
}
}
主要课程:
package textfiles;
import java.io.IOException;
public class FileData {
public static void main(String[] args) throws IOException {
String filePath = "C:/test.txt";
try {
KezelFile file = new KezelFile(filePath);
String[] aryLines = file.toStringArray();
int i;
for (i=0; i < aryLines.length; i++) {
System.out.println(aryLines[i]);
}
file.closeFile();
}
catch (IOException error){
System.out.println(error.getMessage());
}
}
}
答案 0 :(得分:0)
读完所有行后,再次读取这些行,直到再次打开文件为止。仅仅因为readLine()是从不同的方法调用的,它不会重置&#34;重置&#34;读者。
更好的解决方案是只读取一次文件。我建议您将这些行读成List<String>
,或者在阅读时更好地处理该文件,并且您也不需要该文件。
BTW在Java 8中你可以写
Files.lines(filename).forEach(System.out::println);
也许是时候尝试Java8了;)