Java 为什么我的程序在保存文件后找不到它
我正在做一个库存计划,一直遇到一个问题。我有一些用数字组合命名的文本文件。我叫它们架子。我打开它们并编辑它们以在其中存储项目。我从其中一个中移除一些对象后出现问题 这个过程是如何进行的,我将打开文件。将其加载到JTable中。选择我希望删除的项目和金额。然后重新保存文件。在我打开另一个架子之前,一切都很好。在此过程之后,我尝试打开的任何其他工具架都会告诉我,该工具架不存在,即使它与我刚刚使用的工具架相同。我仍然可以在我的计算机上浏览路径,发现它很好,我可以关闭程序并重新打开它,它可以再次正常工作,直到我从书架上移除和删除该项目。我将在下面发布任何相关代码。谢谢你们的帮助Java 为什么我的程序在保存文件后找不到它,java,Java,我正在做一个库存计划,一直遇到一个问题。我有一些用数字组合命名的文本文件。我叫它们架子。我打开它们并编辑它们以在其中存储项目。我从其中一个中移除一些对象后出现问题 这个过程是如何进行的,我将打开文件。将其加载到JTable中。选择我希望删除的项目和金额。然后重新保存文件。在我打开另一个架子之前,一切都很好。在此过程之后,我尝试打开的任何其他工具架都会告诉我,该工具架不存在,即使它与我刚刚使用的工具架相同。我仍然可以在我的计算机上浏览路径,发现它很好,我可以关闭程序并重新打开它,它可以再次正常工作
String[] binCombos = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10"};
JComboBox<String> aisle, column, row;
JButton open = new JButton("Open Shelf");
tableHolder = new JScrollPane(shelfsContents);
aisle = new JComboBox<String>(binCombos);
column = new JComboBox<String>(binCombos);
row = new JComboBox<String>(binCombos);
open.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
shelfCombo = aisle.getSelectedItem().toString() + column.getSelectedItem().toString() + row.getSelectedItem().toString() + ".txt";
File shelfName = new File(sPath + "\\" + shelfCombo);
if(shelfName.exists() == true && Console.console.IsPulling() == false)
{
OpenShelf(shelfName);
}
else
{
System.out.println(shelfName + " does not exist");
}
}
});
private void SaveShelf()
{
try
{
BufferedWriter bfw = new BufferedWriter(new FileWriter("shelfCombo"));
for(int i = 0; i < tableModel.getRowCount(); i++)
{
for(int j = 0; j < tableModel.getColumnCount(); j++)
{
if(j == 1 || j == 3)
{
if(Integer.parseInt(tableModel.getValueAt(i,3).toString()) > 0)
{
bfw.write(tableModel.getValueAt(i, j).toString());
bfw.write(" : ");
}
}
}
bfw.newLine();
}
bfw.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
试试这个代码
private void SaveShelf(){
PrintWriter pw ;
try
{
pw = new PrintWriter(new File("shelfCombo"));
for(int i = 0; i < tableModel.getRowCount(); i++)
{
for(int j = 0; j < tableModel.getColumnCount(); j++)
{
if(j == 1 || j == 3)
{
if(Integer.parseInt(tableModel.getValueAt(i,3).toString()) > 0)
{
pw.print(tableModel.getValueAt(i, j).toString());
pw.print(" : ");
}
}
}
pw.println();
pw.flush();
}
pw.close();
}
catch (IOException e)
{
e.printStackTrace();
}
finally{
pw.close();
}
}
我怀疑这不是你的意思:新的FileWriterSelf组合。正在创建一个名为shelfCombo的文件。。。未使用shelfCombo变量。如果文件不存在或Console.Console.IsPulling为true,则代码将显示“不存在”错误。这个IsPulling方法是什么,你怎么知道它在这种情况下不是真的?不敢相信我看多了那个lol。这就是问题所在,我忘了将IsPulling设置为false。谢谢现在来解决下一个错误lol