Java 为什么我的程序在保存文件后找不到它

Java 为什么我的程序在保存文件后找不到它,java,Java,我正在做一个库存计划,一直遇到一个问题。我有一些用数字组合命名的文本文件。我叫它们架子。我打开它们并编辑它们以在其中存储项目。我从其中一个中移除一些对象后出现问题 这个过程是如何进行的,我将打开文件。将其加载到JTable中。选择我希望删除的项目和金额。然后重新保存文件。在我打开另一个架子之前,一切都很好。在此过程之后,我尝试打开的任何其他工具架都会告诉我,该工具架不存在,即使它与我刚刚使用的工具架相同。我仍然可以在我的计算机上浏览路径,发现它很好,我可以关闭程序并重新打开它,它可以再次正常工作

我正在做一个库存计划,一直遇到一个问题。我有一些用数字组合命名的文本文件。我叫它们架子。我打开它们并编辑它们以在其中存储项目。我从其中一个中移除一些对象后出现问题

这个过程是如何进行的,我将打开文件。将其加载到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