对于File类中的renameTo()方法,可以如下方式调用:
File old = new File(source);
File rname = new File(dest);
System.out.println(old.renameTo(rname));
使用时,注意事项为:
1.source不管是代表一个目录,还是一个文件的路径都必须是在磁盘上存在的,如:E:\access\A代表,在E盘的access文件夹下有一个名字为A的文件夹;或E:\access\cookie2.java表示在E盘的access文件夹下有一个名字为cookie2.java的文件。
2.dest则恰恰相反,代表一个不存在的目录或文件路径(仅限最后一个'\'后面文件夹或文件的不存在,其余的目录必须已存在)。
其中1,2两点必须同时具备,否则出错(返回false)。
更详细说明为:
1)、source=“文件路径”->dest=“文件路径”,如:操作前目录结构右图示:,source="E:\access\B\C\LibTest.java",dest="E:\access\A\noexist.java"。操作后,会在A目录下成功生成一个noexist.java文件(之前不存在),同时删除C目录下的LibTest.java文件。注意:此时source中的路径必须是一个真实存在的路径;同时,对于dest来说,E:\access\A也必须存在,但是不能在操作前就已近有一个noexist.java存在了(解释注意事项)。
若:在操作前,将名字为A的的文件夹删除掉,此时仍然使用:dest="E:\access\A\noexist.java"。则操作不成功(返回false),因为A文件夹不存在,也就不存在一条E:\access\A\的路径。
2)、source="目录" ->dest="目录",如:source="E:\access\B\C\D",dest="E:\access\K\F",操作后,会将D目录(连同其中的文件夹和文件)剪切到K文件夹中,并将D文件夹重命名为F。同上1),E:\access\K必须是事先已经存在,否则不成功。如:操作前,access目录下没有K文件夹存在,那么操作就会失败。因为找不到E:\access\K\ 这条路径。
3)、source="目录" ->dest="文件路径",如:source="E:\access\A",dest="E:\access\B\m.java",此时E: \access\B路径必须存在(同上),但是里面没有一个叫“m.java”的文件或文件夹。操作后,会在B文件夹下生成一个名叫m.java的文件夹,并将A目录中所有东西剪切到m.java这个文件夹中,并删除文件夹A。
仔细分析,会发现,此时尽管dest="E:\access\B\m.java"中看似有一个m.java文件,但是由于事先在B文件夹下没有名为m.java的文件或文件夹(否则出错)。所以,在执行renameTo()时,系统会把m.java当做了一个文件夹看待。可归为2)一类。
4)、source="文件路径" ->dest="目录",可和1)归为一类。如:source="E:\access\B\D\a.java",dest="E:\access\X",
此时会将a.java文件剪切到access目录下,并重命名为X。