2017-10-13 61 views
0

我正在寻找一种方法,在我的程序处理完文件后将旧文件转换为新文件。新文件在处理完后应该包含当前时间戳。例如,我的旧文件是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 



它是一个已知的bug与Java?我在网上找到这个information。有没有办法做到这一点,而不需要从旧文件中复制内容并将其写入新文件?

+0

你确定 “的test.txt” 的文件存在? – Jerry06

+0

是的,它已经存在了,因为IOException没有提出 – test

+0

不,你应该调用'file.exists()'来查看。如果它不存在,'rename'将返回false – Jerry06

回答

0

它返回false的一个常见原因是因为你的文件被锁定,这就是为什么它返回false。检查你是否在任何应用程序中打开它,或者如果你的应用程序本身锁定在某个地方

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

+0

这是非常可能的原因。在创建文件时使用file.setReadable()和file.setWritable。 –

+0

注意:在窗口中可写仅更改“只读”标志,因此它不会影响文件重命名。 – leafy

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"); 
     } 
+0

也适用于csv文件吗? – test

+0

是的,但您需要相应地对上述代码进行更改。 – Chandrakant

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 
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

+0

存在一个文件zzzz.txt并重命名,我在这里使用了一个临时文件。 –

+0

适用于任何种类的文件,包括csv文件。 –