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();
}