Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 程序不保存文件_Java_File_Io - Fatal编程技术网

Java 程序不保存文件

Java 程序不保存文件,java,file,io,Java,File,Io,我不是把我所有的课程都放在这里,而是: 检查选项面板 当我点击退出按钮时,它实际上打开了保存窗口,我输入了被保存文件的名称,它似乎工作正常,但文件实际上没有保存在我的计算机中 问题是,当我手动保存文件时,ChooseFile()方法工作得非常好,这意味着我点击了“写入文件”按钮。。。但当按下退出按钮时,它不会真正保存我的文件 你知道为什么不保存吗?你的选择文件不进行I/O操作。它允许用户选择并存档,但不执行任何操作 public static void chooseFile(int ioOpti

我不是把我所有的课程都放在这里,而是:

检查选项面板 当我点击退出按钮时,它实际上打开了保存窗口,我输入了被保存文件的名称,它似乎工作正常,但文件实际上没有保存在我的计算机中

问题是,当我手动保存文件时,
ChooseFile()
方法工作得非常好,这意味着我点击了“写入文件”按钮。。。但当按下退出按钮时,它不会真正保存我的文件


你知道为什么不保存吗?

你的
选择文件
不进行I/O操作。它允许用户选择并存档,但不执行任何操作

public static void chooseFile(int ioOption) {
    int status;
    JFileChooser chooser = new JFileChooser();
    if (ioOption == 1) {
        status = chooser.showOpenDialog(null);
    } else {
        status = chooser.showSaveDialog(null);
    }

    if (status == JFileChooser.APPROVE_OPTION) {
        File file = chooser.getSelectedFile();
        filePath = file.getPath();
    }
    changeInAcc = false;
}
与您的“写入”选项相比

chooseFile(2);
try {
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
    out.writeObject(account);
    out.close();
} catch (IOException exc) {
    exc.getMessage();
}
一句警告的话。以这种方式依赖
static
变量只会让你脸红。
chooseFile
方法应返回所选的
文件

您应该创建一个
read
write
方法来执行这些操作,并允许您根据需要(从类的实例)访问它们

我看不出您是如何神奇地想象调用
chooseFile
方法实际上会突然保存任何内容

添加

谢谢你,安德鲁

您的异常处理还有一些不足之处。至少要努力一点。如果要显示错误消息,应使用
Exception#printStackTrace
,它将自动将堆栈跟踪转储到标准输出,从而使您的生活简单得多

chooseFile(2);
try {
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
    out.writeObject(account);
    out.close();
} catch (IOException exc) {
    //exc.getMessage(); <-- This is useless
    exc.printStackTrace();
}
选择文件(2);
试一试{
ObjectOutputStream out=新的ObjectOutputStream(新的FileOutputStream(filePath));
out.writeObject(账户);
out.close();
}捕获(IOException){

//exc.getMessage();您的
chooseFile
方法没有可以查看的文件IO…没有将文件保存到哪里?Textfile?它应该在我的硬盘上保存一个二进制文件(.dat)。@MadProgrammer当然它会进行文件I/O。正如我所说,当我使用写/读单选按钮时,它会保存/读取文件,但不会通过退出按钮
}catch(IOException exc){exc.getMessage();
这将完全实现..什么都没有。将其更改为
}catch(IOException exc){exc.printStackTrace();
@andrewhompson No我正忙于看到红色:P@MikeAnderson欢迎来到我的“开始”状态;)
chooseFile(2);
try {
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
    out.writeObject(account);
    out.close();
} catch (IOException exc) {
    exc.getMessage();
}
chooseFile(2);
try {
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
    out.writeObject(account);
    out.close();
} catch (IOException exc) {
    //exc.getMessage(); <-- This is useless
    exc.printStackTrace();
}