0

我正在尝试修改文件中的数据。在检查它是否已成功删除并重命名文件时,它总是打印“未成功更改”。

public void transfer()
{

    File temp=new File("temp.dat");
    File supply=new File("supply.dat");
    boolean rename=temp.renameTo(supply);
    boolean delete=supply.delete();

    if(delete && rename)
        Sopln("Successfully Changed");
    else
        Sopln("Not Successfully Changed");
}//transfer end

这是我调用此方法的 switch-case 块。

    Sopln("Modify :-");
    Sopln("1)Preffered Period");
    Sopln("2)Preffered Class");
    Sopln("3)Exit");
    int option;
    do
    {
        option=Check_Int("Enter Your Choice");
        int ctr=0;
        switch(option)
        {
            case 1: Sopln("______________________________");
                    String name=Check_String("Enter The Name Of The Teacher Whose Details You Want To Change");
                    String record;
                    while((record=fr.readLine())!=null)
                    {
                        String token[]=record.split("-");
                        if(name.equalsIgnoreCase(token[0]))
                        {
                            Sopln("Your Current Info:");
                            Sopln("Name : "+token[0]);
                            Sopln("Preffered Period : "+token[3]);
                            Sopln("Enter Your New Preffered Period");
                            token[3]=br.readLine();
                            pw.println(token[0]+"-"+token[1]+"-"+token[2]+"-"+token[3]+"-"+token[4]);
                            ctr++;
                        }//if block end
                        else
                        {pw.println(record);}
                    }//while loop end
                    if(ctr==0)
                    {Sopln("Not Found");
                    submenu();
                    }
                    else
                    {
                        ctr=0;
                        transfer();
                    }
                    fr.close();
                    pw.close();
                    break;
            case 2: Sopln("______________________________");
                    String name_class=Check_String("Enter The Name Of The Teacher Whose Details You Want To Change");
                    String record_class;
                    int cnt=0;
                    while((record_class=fr.readLine())!=null)
                    {
                        String token[]=record_class.split("-");
                        if(name_class.equalsIgnoreCase(token[0]))
                        {
                            Sopln("Your Current Information:-");
                            Sopln("Name : "+token[0]);
                            Sopln("Preffered Class : "+token[4]);
                            Sopln("Enter Your New Preffered Class");
                            token[4]=br.readLine();
                            pw.println(token[0]+"-"+token[1]+"-"+token[2]+"-"+token[3]+"-"+token[4]);
                            cnt++;
                        }//if block end
                        else
                        {pw.println(record_class);}//else block end
                        }//while loop end
                        if(cnt==0)
                        {Sopln("Name Not Found!");
                        submenu();}
                        else
                        {
                            cnt=0;
                            transfer();
                        }//else block end
                        fr.close();
                        pw.close();
                        break;
            case 3: main_menu mm=new main_menu();
                    mm.menu();
                    break;
        }
    }while(option<0 || option>2);
}//change method end

所以,当我检查我的文件时,临时文件是用必要的修改创建的,但是文件没有被重命名,原始的供应文件也没有被删除。请帮忙!!

4

1 回答 1

0

您首先重命名然后创建一个新的文件变量然后删除。简单的解决方案。

public void transfer()

{ //重命名文件 File temp=new File("temp.dat"); 文件供应=新文件(“供应.dat”);布尔重命名=temp.renameTo(供应);

//delete file
File f = new File("supply.dat");
boolean delete=supply.delete();


if(delete && rename)
    Sopln("Successfully Changed");
else
    Sopln("Not Successfully Changed");

}//传输结束

于 2013-10-16T09:03:31.627 回答