尝试重命名目录名和文件名。
try
{
File dir = new File("DIR");
dir.mkdir();
File file1 = new File(dir,"myfile1.txt");
file1.createNewFile();
File file2 = new File(dir,"myfile2.txt");
file2.createNewFile();
dir.renameTo(new File("myDIR"));
System.out.print(file1.renameTo(new File(dir,"myf1.txt")));
}
catch(IOException ie)
{
}
但是,只有目录成功重命名,而不是文件名 这些操作不能同时进行吗?
答案 0 :(得分:4)
这是因为您的file1
,file2
和File dir = new File("DIR");
dir.mkdir();
File file1 = new File(dir,"myfile1.txt");
file1.createNewFile();
File file2 = new File(dir,"myfile2.txt");
file2.createNewFile();
指向旧路径。
执行这些行后,
dir = "DIR" // Exists
file1 = "DIR\myfile1.txt" //Exists
file2 = "DIR\myfile2.txt" //Exists
这些将是变量引用的路径
dir.renameTo(new File("myDIR"));
执行后,
dir = "DIR" // Doesn't exist anymore because it's moved.
file1 = "DIR\myfile1.txt" // Doesn't exist anymore because it's moved along with dir.
file2 = "DIR\myfile2.txt" // Doesn't exist anymore because it's moved along with dir.
变量引用的路径仍然相同,
System.out.print(file1.renameTo(new File(dir,"myf1.txt")));
所以,当你打电话时,
renameTo()
您正在对不存在的文件和不存在的目录调用.exists()
。所以它一定会失败。
即使您在dir
,file1
或file2
中的任何一个上调用false
方法,它也只会返回var a = function ()
{
}
a.prototype.foo = function ()
{
bar();
}
var b = function ()
{
a.call(this)
}
b.prototype = Object.create(a.prototype);
b.prototype.constructor = b;
。
答案 1 :(得分:1)
我发现这个问题非常有趣!程序的顺序始终很重要。
try
{
File dir = new File("DIR");
dir.mkdir();
这里dir指向文件系统中的一个位置。
File file1 = new File(dir,"myfile1.txt");
file1.createNewFile();
File file2 = new File(dir,"myfile2.txt");
file2.createNewFile();
重命名时,意味着dir将指向其他位置。
dir.renameTo(new File("myDIR"));
您正在尝试重命名指向已过时的位置的文件。
System.out.print(file1.renameTo(new File(dir,"myf1.txt")));
}
catch(IOException ie)
{
System.out.println(ie);
}
尝试下面的代码,我已经移动了代码,在文件重命名后重命名该文件夹。
try
{
File dir = new File("DIR");
dir.mkdir();
File file1 = new File(dir,"myfile1.txt");
file1.createNewFile();
File file2 = new File(dir,"myfile2.txt");
file2.createNewFile();
System.out.print(file1.renameTo(new File(dir,"myf1.txt")));
dir.renameTo(new File("myDIR"));
}
catch(IOException ie)
{
System.out.println(ie);
}
我测试了代码!
答案 2 :(得分:0)
不喜欢这样。 重命名目录后,file1和file2对象仍然指向剩余的旧文件路径。 你需要将它们设置为" new"重命名的目录中的文件。