首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重命名目录时重命名文件

重命名目录时重命名文件
EN

Stack Overflow用户
提问于 2015-07-18 18:15:14
回答 3查看 196关注 0票数 4

试图同时重命名目录名和文件名。

代码语言:javascript
复制
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)
    {

    }

但是,只有目录被成功地重命名,而不是文件名。

这些操作不能同时进行吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-18 18:39:49

这是因为您的dirfile1file2都指向了旧的路径。

在执行这些行之后,

代码语言:javascript
复制
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();

这些是变量引用的路径,

代码语言:javascript
复制
dir = "DIR" // Exists
file1 = "DIR\myfile1.txt" //Exists
file2 = "DIR\myfile2.txt" //Exists

在你处决后,

代码语言:javascript
复制
    dir.renameTo(new File("myDIR"));            

变量引用的路径仍然相同,

代码语言:javascript
复制
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.

所以当你打电话的时候

代码语言:javascript
复制
    System.out.print(file1.renameTo(new File(dir,"myf1.txt")));

您正在对不存在的文件和不存在的目录调用renameTo()。所以它肯定会失败。

即使在任何一个.exists()file1file2上调用false方法,它也只返回false

票数 4
EN

Stack Overflow用户

发布于 2015-07-18 18:40:20

我觉得这个问题很有趣!节目的顺序总是很重要的。

代码语言:javascript
复制
try
{
    File dir = new File("DIR");
    dir.mkdir();

在这里,dir指向文件系统中的位置。

代码语言:javascript
复制
    File file1 = new File(dir,"myfile1.txt");
    file1.createNewFile();
    File file2 = new File(dir,"myfile2.txt");
    file2.createNewFile();

重命名它时,它意味着dir将指向不同的位置。

代码语言:javascript
复制
    dir.renameTo(new File("myDIR"));  

您正在尝试重命名一个指向已经过时的位置的文件。

代码语言:javascript
复制
    System.out.print(file1.renameTo(new File(dir,"myf1.txt")));
}
catch(IOException ie)
{
    System.out.println(ie);
}

尝试下面的代码,我已经移动代码重命名文件夹后文件重命名。

代码语言:javascript
复制
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);
}

我测试了密码!

票数 1
EN

Stack Overflow用户

发布于 2015-07-18 18:40:03

不是这样的。重命名dir之后,file1和file2对象仍然指向剩余文件之前的旧文件路径。您需要将它们设置为重命名的dir中的“新”文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31494111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档