使用Java写入文件

3

我对Java非常陌生,我无法将内容写入文件,我的代码如下:

FileWriter fstream;
    try {
        fstream = new FileWriter(fileLocation);
        BufferedWriter out = new BufferedWriter(fstream);
        log.info("test was supposed to be written to the file");
        out.write("test");

        out.flush();
        out.close();

    } catch (IOException e) {
        log.error("File not created ", e);
    }

当我进入文件位置时,我看到我的文件,但是它是空的。我的日志显示“test应该被写入文件”。
我在这里可能做错了什么?
谢谢!
更新:我的FileLocation变量是一个字符串:
private String fileLocation="/Users/s/out.txt";

我正在使用Mac电脑


1
你忘记关闭文件写入器了。 - starcorn
你能发布你程序的其余部分以及运行时“fileLocation”的值吗?此外,你使用的是Windows、Mac还是*nix系统? - Tony Casale
2
代码在我的电脑上可以运行。当 BufferedWriter 被关闭时,应该同时关闭底层的 writer,是吗?也许存在访问权限方面的问题?你尝试过一个有完全访问权限的文件夹了吗? - Martin Klinke
2
@starcorn,这并不重要。关闭最外层包装器就足够了,即使我会在finally中这样做。flush()调用也是不必要的,因为close已经隐式地执行了它。 - BalusC
1
被接受的答案表明这是一个无法被复制的问题(由正确运行测试的人)。 - Raedwald
显示剩余2条评论
1个回答

3

代码没问题。你确定检查的是正确的文件位置吗?也许你在检查之前已经创建了要检查的文件,而你的程序可能会写到其他地方。


你说得对,我正在使用Vaadin使这个文件可下载,所以每次我下载它时,它都是空的,但原始文件似乎有“test”在里面。谢谢你的建议 :) - Doug Molineux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接