我知道這可能已經在這裏回答了一百萬次,但是我看過的所有內容都沒有幫助我。這裏是我的代碼:java renameTo方法不起作用
for(File g: f.listFiles()){
for(File h : g.listFiles()){
try{
Scanner s = new Scanner(h);
String timestamp = s.next().split("[?]")[4];
File z = new File(h.getAbsolutePath().split("[.]")[0] + timestamp + h.getAbsolutePath().split("[.]")[1]);
boolean q = h.renameTo(z);
}catch(Exception e){
}
}
}
我檢查過,看看是否存在文件z,它沒有。我檢查過,如果文件h存在,它確實存在。我已經加倍檢查,h是絕對路徑。如果我打印z的絕對路徑,我會得到正確的路徑。 f中的任何目錄或g中的文件都不打開。由h表示的文件未打開。有沒有一些標誌設置或文件上的Windows不允許我的程序重命名?
這可能很容易成爲權限問題。是拋出異常,還是'renameTo()'返回'false'? – dlev 2012-07-19 22:40:41
如果z不存在,那麼可能你的字符串在新的File()中是不正確的,我不知道所有的分割是什麼,因爲我不知道如何命名文件。當你只是在filz z = new File(...)的圓括號內打印println()時,輸出是什麼?另外,在catch塊中添加e.printStackTrace();它可以啓發你的問題 – 2012-07-19 22:41:13
不會引發異常。假返回 – user972276 2012-07-19 22:42:25