BufferedWriter适用于Windows但不适用于Mac

时间:2017-08-06 20:00:10

标签: java macos io

所以我使用这种方法写入一个文件,它在Windows上运行完全正常,但在mac上运行时会创建文件,但它们都是空的。

public static void writeLinesToTextFile(String path, String[] lines) {
File file = new File(r + path);
if (!file.exists()) {
    try {
        file.getParentFile().mkdirs();
        file.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

    BufferedWriter bw;

    try {

        bw = new BufferedWriter(new FileWriter(file.getPath()));
        file.delete();
        file.createNewFile();

        for (int i = 0; i < lines.length; i++) {
            //System.out.println(lines[i]);
            bw.write(lines[i]);
            bw.write(System.getProperty("line.separator"));
        }
        bw.flush();
        bw.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

}

我知道数据是正确的,因为它打印正确。 感谢您的帮助,这真的让我感到沮丧。

1 个答案:

答案 0 :(得分:1)

创建file后,请勿删除BufferedWriter。在Linux中,每个文件都有唯一的文件句柄,因此删除并重新创建具有相同路径的文件会创建2个不同的文件句柄。我不知道Windows的作用,因为我认为它不是真正的操作系统,但是从你的帖子来看,它似乎使用相同的文件句柄。