从文件读取并操作然后使用java写入另一个文件?

时间:2016-10-19 18:36:56

标签: java

我有数据文件“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();
            }


    }

1 个答案:

答案 0 :(得分:0)

你在reader.readLine()循环的每次迭代中都会调用while两次 - 第一次是在循环声明中,它读取每一个奇数行,第二次只是几个向下线(data1 = reader.readLine();)。第二个电话是在你有机会解析之前吹掉第一个读到的东西。删除第二个电话应该修复"每隔一行"问题。

另一个问题是你在while循环的每次迭代都关闭了编写器 - 不要关闭编写器,直到while循环完成或输出文件将完成程序关闭后,只有第一个解析的数据元素。

相关问题