文件名无法更改

时间:2017-10-13 03:09:11

标签: java

我正在寻找一种在程序处理文件后将旧文件转换为新文件的方法。新文件应包含处理后的当前时间戳。例如,我的旧文件是test.txt。处理完毕后,它应更改为test2017-10-13.txt。我已经在互联网上搜索了解决方案,但我仍然无法使其正常运行。这是我目前的源代码

LocalDate now2 = LocalDate.now(); 
System.out.println("The current day is :" +now2);
File oldFile1 = new File("C:\\Users\\user\\Desktop\\test.txt");
File newFile1 = new File("C:\\Users\\user\\Desktop\\test"+now2+".txt");
boolean success = oldFile1.renameTo(newFile1);
System.out.println(success); 



这是我的示例输出

The current day is :2017-10-13
false



这是java的已知错误吗?我在网上找到了这个information。是否有任何方法可以在不复制旧文件中的内容并将其写入新文件的情况下执行此操作?

4 个答案:

答案 0 :(得分:0)

它返回false的一个常见原因是因为您的文件已被锁定,这就是它返回false的原因。检查您是否在任何应用程序中打开它,或者您的应用程序本身是否将其锁定在某处。

您可以查看Check if a file is locked in Java

答案 1 :(得分:0)

试试这个......

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        File file = new File("D:\\test\\test1.txt");
        File newFile = new File("D:\\test\\test"+dateFormat.format(cal.getTime())+".txt");
        if(file.renameTo(newFile)){
            System.out.println("File rename success");;
        }else{
            System.out.println("File rename failed");
        }

答案 2 :(得分:0)

最佳做法是先检查文件是否存在。然后,执行IO操作。

    if (oldFile1.exists()) {
        boolean success = oldFile1.renameTo(newFile1);
        System.out.println(success);
    }
    else
    {
         System.out.println("failed");
    }

我假设,您在user使用的路径只是占位符,当您在​​代码下运行时,您将其更改为实际的user名称。

C:\\Users\\user\\Desktop\\test

答案 3 :(得分:0)

您需要将文件设置为可读/可写。有时您的文件具有只读访问权限。

第二件事,你应该关闭流(如果使用的话)。

试试这个:

               File f;
               f=new File("zzzz.txt");
               LocalDate ld=LocalDate.now();

               f.renameTo(new File("Hello "+ld.toString()+".txt"));
               System.out.println(f.getAbsoluteFile()+"  "+f.exists());

输出是: 你好2017-10-12.txt