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

时间:2015-01-16 18:16:52

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

1 个答案:

答案 0 :(得分:0)

试试这段代码

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