使用Java无法保存到文本文件

时间:2010-11-30 22:47:38

标签: java io text-files

我正在尝试使用提交按钮将GUI保存在文本文件中,我已经制作了GUI和按钮监听器等等但是我无法制作将GUI中的信息保存到文本文件中的方法。

到目前为止,我有:

public void save() {

    File k1 = new File("documents/"+"newfile.txt");
    try {
       k1.createNewFile();
       FileWriter kwriter = new FileWriter(k1);

       BufferedWriter bwriter = new BufferedWriter(kwriter);
       bwriter.write(txtField1.getText().trim());
       bwriter.newLine();
       bwriter.close();

    } catch (IOException e) {
       e.printStackTrace();
    }
}

但它似乎不起作用,没有任何反应;有什么我想念的吗?

5 个答案:

答案 0 :(得分:2)

您的文件名为.txt - 可能在第一行插入名称:

File k1 = new File("documents/filename.txt");

答案 1 :(得分:1)

运行该代码时应该收到错误。 问题是文档目录不存在或者不在您期望的位置。

您可以使用以下方法检查父目录:

if(!k1.getParentFile().exists()){
    k1.getParentFile().mkdirs();
}

或者,您需要将文件设置为更精确的位置。 org.apache.commons.lang.SystemUtils可以帮助你在这里与用户家。

答案 2 :(得分:0)

我的猜测是文件正在创建,但不在您期望的目录中。检查user.dir系统属性的值,看看它显示的内容。这是JVM的当前工作目录。

您可能需要:

  • 在代码中指定完整路径(如Martin建议的那样),例如: new File("/home/foo/newfile.txt")
  • 更改JVM的工作目录。你这样做的方式取决于你如何启动它(例如,如果你直接从CLI运行java命令,然后只是先切换目录,如果你从IDE运行然后更改启动配置,等)。

据我所知,您无法在运行时更改工作目录(请参阅this SO question)。

答案 3 :(得分:0)

  

我只是认为有一种更简单的方法,例如我按下“提交”按钮时已经让Jfilechoser打开“另存为框”,因此有更简单的方法来创建文件(保存gui信息)在txt文件中)?

这是previous question的延续。您应该获取所选文件并在Writer的任何PrintWriter的帮助下写入,Java IO tutorial

File file = fileChooser.getSelectedFile();
PrintWriter writer = new PrintWriter(file);
try {
    writer.println(txtField1.getText().trim());
    writer.flush();
} finally {
    writer.close();
}

请勿在其他位置创建new File()并致电File#createFile(),以免过度复杂化。写信就足够了。

另见:


更新这里是{{3}},你可以复制'n'paste'n'compile'n'run它。

package com.example;

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

import javax.swing.JFileChooser;

public class Test {

    public static void main(String[] args) throws IOException {
        JFileChooser fileChooser = new JFileChooser();
        if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            PrintWriter writer = new PrintWriter(file);
            try {
                writer.println("Hello");
                writer.flush();
            } finally {
                writer.close();
            }
            Desktop.getDesktop().open(file);
        }
    }

}

答案 4 :(得分:0)

您的代码对我有用,只需稍加改动。

作为调试过程,我会完全删除目录路径并尝试仅使用文件..

而不是

File k1 = new File("documents/"+"newfile.txt");

使用

File k1 = new File("newfile.txt");

检查文件的生成位置,然后在那里创建目录..

祝你好运!!