我知道这可能已经在这里回答了一百万次,但是我看过的所有内容都没有帮助我。这里是我的代码: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