java - 尝试使用缓冲写入器将文件保存在文档文件夹中不起作用

标签 java

我试图将用户输入保存到 .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 的 Path api,它有一个采用可变参数的便捷方法: 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);
    }

关于java - 尝试使用缓冲写入器将文件保存在文档文件夹中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55883806/

相关文章:

java - 小数位数和固定列格式

java - 如何在Gson中将对象序列化为单个值?

java - 如何从 thymeleaf 获取输入而不出现模糊处理程序错误?

java - 无法执行 dex : Multiple dex files define

java - 在文本文件中查找字符串的方法,如果找不到字符串,则将字符串添加到文本文件,否则拒绝输入

java - 在java中使用构建模式显示UTF8字符串时出错

java - 如何为仅包含对下一个节点的引用的节点实现HashCode()?

java - EJB:看来我不明白关键点

java - java中访问mongo数组中的元素

java - 使用计时器调度 Java 线程