所以我使用这种方法写入一个文件,它在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();
}
}
我知道数据是正确的,因为它打印正确。 感谢您的帮助,这真的让我感到沮丧。
答案 0 :(得分:1)
创建file
后,请勿删除BufferedWriter
。在Linux中,每个文件都有唯一的文件句柄,因此删除并重新创建具有相同路径的文件会创建2个不同的文件句柄。我不知道Windows的作用,因为我认为它不是真正的操作系统,但是从你的帖子来看,它似乎使用相同的文件句柄。