BufferedWriter.newLine()没有写入新行

时间:2018-04-28 06:29:44

标签: java

好吧,直到我已经编写了一个简单的应用程序,在该应用程序中,它获取了它经过的文件的第一行的字符串,然后我将它记录到它所获得的所有字符串txt文件但是当它记录时它只是继续用其他文件中的新字符串替换自己。

我希望它记录它获得的字符串,然后在新行中从另一个文件中写入新字符串,但我似乎无法使其工作。

对于任何可以帮助我解决问题的人,我都非常感激。

public static void main(String[] args) throws Exception {
    File dir = new File("C://Users//Test//Desktop//lists");
    if (dir.isDirectory()) {
        for (File file : dir.listFiles()) {
            String line1 = Files.readAllLines(Paths.get(file.getAbsolutePath())).get(0);
            BufferedWriter writer = new BufferedWriter(new FileWriter("C://Users//Test//Desktop//logged.txt"));
            writer.write(line1);
            writer.newLine();
            writer.close();
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您每次new writer。在new开始之前添加for行。

public static void main(String[] args) throws Exception {
    File dir = new File("C://Users//Test//Desktop//lists");
    if (dir.isDirectory()) {
    BufferedWriter writer = new BufferedWriter(new FileWriter("C://Users//Test//Desktop//logged.txt"));
        for (File file : dir.listFiles()) {
            String line1 = Files.readAllLines(Paths.get(file.getAbsolutePath())).get(0);
            writer.write(line1);
            writer.newLine();
        }
            writer.close();
    }
}

答案 1 :(得分:0)

您在文本循环的每次迭代中重新打开文件logged.txt。这将截断文件并再次开始写入。如果你真的想重新打开文件,你需要使用追加模式:FileWriter("filename.txt", true),但你可能想在循环之前打开BufferedWriter并在之后关闭它。

答案 2 :(得分:0)

注意:  您必须在 for 循环

之外打开和关闭编写器对象

试试这个

public static void main(String[] args) throws Exception {
    File dir = new File("C://Users//Test//Desktop//lists");

    if (dir.isDirectory()) {
        BufferedWriter writer = new BufferedWriter(new FileWriter("C://Users//Test//Desktop//logged.txt"));

        for (File file : dir.listFiles()) {
            String line1 = Files.readAllLines(Paths.get(file.getAbsolutePath())).get(0);
            writer.write(line1);
            writer.newLine();
        }
        writer.close();

    }
}