首页 > 解决方案 > 尝试使用 Buffered Writer 将文件保存在文档文件夹中不起作用

问题描述

我正在尝试将用户输入保存到一个 .txt 文件中,该文件应该存储在文档文件夹中名为“ht”的文件夹中,但事实并非如此。注意:当我直接保存到文档文件夹时,文件会被保存。

这是我的代码:

public void saveUserData() throws IOException {
//        Path path = Paths.get(filename);
        Path path = Paths.get(FileSystemView.getFileSystemView().getDefaultDirectory().getPath()+"\\"+"ht"+"\\"+filename);
        BufferedWriter bw = Files.newBufferedWriter(path);
        try {
            Iterator<FormInput> iter = dataItems.iterator();
            while (iter.hasNext()) {
                FormInput item = iter.next();
                bw.write(String.format("%s\t%s",
                        item.getUserName(),
                        item.getPassword()));
                bw.newLine();
            }
        } finally {
            if (bw != null) {
                bw.close();
            }
        }
    }

标签: java

解决方案


避免手动连接路径。它很容易出错,并且您可能会弄乱由不同操作系统引起的复杂性。

您已经在使用 Java 的Pathapi,它有一个采用 varargs: 的便捷方法Paths.get(String first, String... more)。因此,将其更改为:Paths.get(System.getProperty("user.home"), "ht", fileName)

现在,FileSystemViewSwing试图启动 GUI 并卡住的 api。我已将其替换为System.getProperty("user.home").

- 更新 -

如果目录不存在:

    Path dir = Paths.get(System.getProperty("user.home"), "ht");
    if (!Files.exists(dir)) {
      Files.createDirectories(dir);
    }

推荐阅读