文件被赋予一个新名称但仍然替换以前的文件

时间:2014-08-31 13:58:03

标签: java file

我正在创建一个程序,用于存储商店的基本销售信息,我希望它每周创建一个新的.txt文件来存储所述信息。我尝试创建一段代码,首先检查文件是否已存在该周编号,如果是,它将允许用户替换该周的文件或创建一个周数为他们通过以下方式做出选择:

try{
        File fileTest = new File("Weeks\\Week " + weekNum + ".txt");

        if(fileTest.exists()){
            while(fileTest.exists()){

                replaceFile = JOptionPane.showInputDialog("There is already a file for Week " + weekNum + ". Replace? Yes/No");

                if(replaceFile.equalsIgnoreCase("No")){
                    weekNum = Integer.parseInt(JOptionPane.showInputDialog("Enter the week number you would like to create."));
                    fileTest.renameTo(new File("Weeks\\Week " + weekNum + ".txt"));
                }else if(replaceFile.equalsIgnoreCase("Yes")){
                    BufferedWriter fileOut = new BufferedWriter(new FileWriter("Weeks\\Week " + weekNum + ".txt"));
                    itemDisplay.write(fileOut);
                    fileOut.close();
                    weekNum++;
                }else{
                    JOptionPane.showMessageDialog(null, replaceFile + " was not recognized.");
                }
            }
        }else{
            BufferedWriter fileOut = new BufferedWriter(new FileWriter("Weeks\\Week " + weekNum + ".txt"));
            itemDisplay.write(fileOut);
            fileOut.close();
            weekNum++;
        }
    }catch(Exception e) {}

如果我选择更换文件,它可以完美地工作,只需用新信息覆盖旧文件即可。但是,如果我选择不替换文件并选择一个不存在的新周,则会完美地创建新的一周,但它也会删除旧周的文件。我发现这似乎没有任何理由,所以我问: 我必须改变什么以便程序KEEPS旧周并且当我选择不替换旧周时创建新周?

2 个答案:

答案 0 :(得分:0)

替换此

fileTest.renameTo(new File("Weeks\\Week " + weekNum + ".txt"));

通过以下

fileTest = new File("Weeks\\Week " + weekNum + ".txt");

另外,你的if测试没用(while循环就够了),你的第一个inputDialog最好是一个confirmDialog。

答案 1 :(得分:0)

如果您说“否”:您正在重命名当前文件。

fileTest.renameTo(new File("Weeks\\Week " + weekNum + ".txt"));

而是使用新名称创建一个新文件并在其上书写。