我正在使用此方法將具有更改信息的文件複製到新文件。 我只是附上了這個代碼(按預期工作),以防我的無知超出了我的期望。Java使用renameTo(file)方法重命名文件
public void Writedevices(String Start)throws IOException{
File S = null;
File D = null;
BufferedReader reader = null;
String line;
BufferedWriter writer = null;
PrintWriter Newfile = new PrintWriter("Destination.txt","UTF-8");
int i=0;
try{
S = new File(Start);
D = new File("Destination.txt");
}
catch (NullPointerException e){
System.err.println("File not found.");
}
try{
reader = new BufferedReader(new FileReader(S));
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(D), "utf-8"));
line = reader.readLine();
while(line != null){
if(!line.toLowerCase().contains("pieces")){
writer.write(line);
writer.append(System.getProperty("line.separator"));
}
else{
writer.write(" PIECES "+Availability.get(i));
writer.append(System.getProperty("line.separator"));
i++;
}
line=reader.readLine();
}
}
catch (FileNotFoundException e){
System.err.println("Error opening file!");
}
finally{
writer.close();
reader.close();
}
這是我遇到問題的地方。起始文件刪除,但最終正確更改的文件未按預期重命名。
S.delete();
File Name = new File("Available_Devices.txt");
if(D.renameTo(Name)){
System.out.println("Device list availability update succesfull.");
}
}
正如您所描述的,您希望將源文件重命名爲Destination.txt,但它會重命名爲Available_Devices.txt?我的理解是真的嗎? –
如果我是真的,只要刪除這些if語句if(D.renameTo(Name)){'和文件仍然是'Destination.txt',因爲您希望在這一行中有'D = new File(「Destination.txt」 );' –
@rahmatwaisi它應該將文件重命名爲Available_Devices。即使沒有if語句,重命名也不會發生。 –