我有数据文件“ReadFile1.txt”。我想从ReadFile1.txt读取每个数据并操纵这些数据,然后将结果写入另一个文件“WriteFile2.txt”。这是我的功能。问题是它只读取第2,第4等,并且只写第2个结果。这段代码有什么问题?感谢您的帮助。
public void doManipulate() throws NumberFormatException, IOException {
int multiple = 10;
try {
FileInputStream file = new FileInputStream("ReadFile1.txt");
InputStreamReader input = new InputStreamReader(file);
BufferedReader reader = new BufferedReader(input);
String data1;
while ((data1 = reader.readLine()) != null) {
int data2 = 0;
data1 = reader.readLine();
data2 = Integer.parseInt(data1);
int compressedFrames = data2*multiple;
File file2 = new File("WriteFile2.txt");
FileWriter writer = new FileWriter(file2);
writer.write(String.valueOf(compressedFrames) + "\n");
writer.flush();
writer.close();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
你在reader.readLine()
循环的每次迭代中都会调用while
两次 - 第一次是在循环声明中,它读取每一个奇数行,第二次只是几个向下线(data1 = reader.readLine();
)。第二个电话是在你有机会解析之前吹掉第一个读到的东西。删除第二个电话应该修复"每隔一行"问题。
另一个问题是你在while
循环的每次迭代都关闭了编写器 - 不要关闭编写器,直到while
循环完成或输出文件将完成程序关闭后,只有第一个解析的数据元素。