用Java写入文件

时间:2013-05-19 18:29:39

标签: java bufferedwriter

首先,我是Java的新手。我为自己设定了一个小项目,目前我被困住了。我试图写一个已经存在的文件,但它只是覆盖它。我试图替换包含'maxBooks'的行。

以下是我使用的代码:

FileWriter writeFile = new FileWriter(fileLocation);
            BufferedReader readLines = new BufferedReader(new FileReader(fileLocation));
            BufferedWriter writeLines = new BufferedWriter(writeFile);

            System.out.println("\n-----File Begin-----");

            while((finalLines = readLines.readLine()) != null){

                if(finalLines.contains("maxBooks")){
                    writeLines.newLine();
                    writeLines.write(finalLines);

                    System.out.println("This is the if statement");
                    System.out.println(finalLines);
                } else {
                    fileLines.add(new String(finalLines));
                    System.out.println("This is the else statement");
                    System.out.println(finalLines);
                }
            }

            System.out.println("------File End------");

请记住,我已经遗漏了尝试并抓住了。请让我知道如何编辑文本文件。如果您需要更多信息,请与我们联系

谢谢:)

修改

对不起,我应该澄清一下。我只是想编辑测试文件中的1行,而不是整个文本文件。

最终代码:

FileWriter writeFile = new FileWriter(fileLocation + ".tmp", true);
            BufferedWriter writeLines = new BufferedWriter(writeFile);

            BufferedReader readLines = new BufferedReader(new FileReader(fileLocation));


            System.out.println("\n-----File Begin-----");

            while((finalLines = readLines.readLine()) != null){

                if(finalLines.contains("maxBooks")){
                    writeLines.write("maxBooks = " + maxBooks);
                    writeLines.newLine();

                    System.out.println("This is the if statement");
                    System.out.println(finalLines);
                } else {
                    fileLines.add(new String(finalLines));
                    System.out.println("This is the else statement");
                    writeLines.write(finalLines);
                    writeLines.newLine();
                }
            }

            System.out.println("------File End------");

            file2.renameTo(file);

            writeLines.close();

2 个答案:

答案 0 :(得分:3)

您覆盖了您尝试阅读的文件,这是不好的做法。写入新文件,然后重命名为原始文件。

答案 1 :(得分:0)

你在同一个fileLocation上读写你应该给两个不同的位置;

就是这样的

//define newLocation as string that contain path for new file to be written    
FileWriter writeFile = new FileWriter(newLocation);
                BufferedReader readLines = new BufferedReader(new FileReader(fileLocation));
                BufferedWriter writeLines = new BufferedWriter(writeFile);