File oldFile = new File("old");
if (oldFile.renameTo(new File("new"))){
System.out.println(oldFile.getName());//this prints "old"
}
Run Code Online (Sandbox Code Playgroud)
我查看了openJDK源代码,并且renameTo(File dest)函数如下所示:
public class File implements Serializable, Comparable<File> {
static private FileSystem fs = FileSystem.getFileSystem();
private String path;
...
public boolean renameTo(File dest) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(path);
security.checkWrite(dest.path);
}
return fs.rename(this, dest);
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以路径变量永远不会改变.为什么会这样?使用重命名的File变量的正确方法是什么?目前我这样做:
File oldFile = new File("/home/blin/misk/old");
File newFile = new File("/home/blin/misk/new");
if (oldFile.renameTo(newFile)){
oldFile=newFile;
System.out.println(oldFile.getName());//this prints "new"
}
Run Code Online (Sandbox Code Playgroud)
File对象只是一个名称,甚至不必存在.renameTo API调用实际上重命名文件系统上的文件,但不会更改文件对象,因为这是API的目的.这里没有对错.Sun的API设计师认为这种方式更有意义.
归档时间: |
|
查看次数: |
3164 次 |
最近记录: |