[英]Reading in text file in Java
我写了一些代码来读取文本文件并返回一个数组,每行存储在一个元素中。 我无法为我的生活解决为什么这不起作用......任何人都可以快速看看吗? System.out.println(行)的输出; 是的,所以我猜测读取行有问题,但我不明白为什么。 顺便说一句,我传递给它的文件肯定有它的东西!
public InOutSys(String filename) {
try {
file = new File(filename);
br = new BufferedReader(new FileReader(file));
bw = new BufferedWriter(new FileWriter(file));
} catch (Exception e) {
e.printStackTrace();
}
}
public String[] readFile() {
ArrayList<String> dataList = new ArrayList<String>(); // use ArrayList because it can expand automatically
try {
String line;
// Read in lines of the document until you read a null line
do {
line = br.readLine();
System.out.println(line);
dataList.add(line);
} while (line != null && !line.isEmpty());
br.close();
} catch (Exception e) {
e.printStackTrace();
}
// Convert the ArrayList into an Array
String[] dataArr = new String[dataList.size()];
dataArr = dataList.toArray(dataArr);
// Test
for (String s : dataArr)
System.out.println(s);
return dataArr; // Returns an array containing the separate lines of the
// file
}
首先,在使用新的FileWriter(文件)打开FileReader后打开FileWriter,该文件以创建模式打开文件。 因此,在运行程序后它将是一个空文件。
其次,你的文件中是否有空行? 如果是这样,!line.isEmpty()将终止你的do-while-loop。
您正在将FileWriter用于您正在阅读的文件,因此FileWriter会清除文件的内容。 不要同时读取和写入同一文件。
也:
我不确定你是否正在寻找一种方法来改进你提供的代码,或者仅仅是为了解决“阅读Java中的文本文件”的解决方案,但如果你正在寻找一个解决方案,我建议你使用apache commons io为你做。 该readlines方法从方法文件实用程序将不正是你想要的。
如果您希望从一个好的示例中学习,FileUtils是开源的,因此您可以通过查看源代码来了解他们如何选择实现它。
您的问题可能有以下几种原因:
最好尝试这种阅读方法:
try {
String line = null;
BufferedReader br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null) {
System.out.println(line);
dataList.add(line);
}
} finally {
if (br != null)
br.close();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.