【问题标题】:Writing String to .txt file not working将字符串写入 .txt 文件不起作用
【发布时间】:2016-10-27 20:53:03
【问题描述】:

嘿,我一直在尝试实现一个程序,该程序从 GUI 获取值并将它们提供给我编写的类中的另一个程序,该类应该输出一个 txt 文件。 GUI 和其他类工作正常,但我似乎无法从 GUI 获取值到其他类,或者类成员根本没有启动。 到目前为止我有这个:

import java.io.*;
//
//some code
//
public static void SaveTextToFile(String Name,String  Spec, String Text ){

    try{
        File file = new File("user.dir"+ File.separator + Name + File.separator + Spec + "Text.txt");
        file.getParentFile().mkdir();
        FileWriter writer = new FileWriter(file);
        writer.write(Text);
        writer.flush();
        writer.close();
    } catch
      (IOException e)  {}
    }

...

但不知何故,甚至没有创建文件或目录。 有任何想法吗?

【问题讨论】:

  • 检查file.getParentFile().mkdir(); 返回的truefalse。如果false 尝试将其替换为file.getParentFile().mkdirs();

标签: java io java-io


【解决方案1】:

如果要创建整个文件夹结构,则必须使用 mkdirs 而不是 mkdir

使用file.getParentFile().mkdirs();

mkdir()

创建由此抽象路径名命名的目录。

mkdirs()

创建由此抽象路径名命名的目录,包括任何必要但不存在的父目录。请注意,如果此操作失败,它可能已成功创建了一些必要的父目录。

阅读this answer

【讨论】:

    【解决方案2】:

    我修复了 appache commons io FileUtils 包的问题。

    现在我有:

    public static void SaveTextToFile(String Name,String  Spec, String Text ){
    
        try{
            File file = new File(Name + File.separator + Spec + "Text.txt");
            org.apache.commons.io.FileUtils.forceMkdirParent(file);
            org.apache.commons.io.FileUtils.writeStringToFile(file, Text,  "utf8");
        } catch
          (IOException e)  {}
        }
    

    而且效果很好

    【讨论】:

      【解决方案3】:

      试试

      File file = new File(
              System.getProperty("user.home") + File.separator +  Name  + File.separator +  Spec  + "Text.txt");
      

      如果你想在用户的文件夹结构中创建一个文件,而不是“user.dir”

      【讨论】:

      • 感谢您的提示。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多