为什么我不能在java中更改所需文件的文件扩展名?

时间:2015-11-05 03:04:02

标签: java eclipse windows file

我无法理解为什么我的代码拒绝将我的txt文件的文件扩展名更改为java。

这是我的代码:

public static void main(String[] arg) {

 File file  = new File("file.txt"); //File I want to change to .java
 File file2 = new File("file.java"); 

 boolean success = file.renameTo(file2); //boolean to check if successful


 if (success == true)
 {
     System.out.println("file extension change successful");

 }else
 {
     System.out.println("File extension change failed");
 }

}// main

它始终打印"文件扩展名失败"每次和我老实说都不明白为什么。我开始怀疑它可能是我计算机上的权限。我使用的编译器是Eclipse。

FIXED:

问题的原因: 我在项目文件夹中的包文件夹中放置了我想要更改的文件 file.txt 。的 C:\用户\宏基\工作空间\ MyProjectName \ SRC \ MyPackageName 即可。因此,系统无法找到该文件。

解决方案: 我只是将文件 file.txt 移动到主项目文件夹中; C:\ Users \ Acer \ workspace \ MyProjectName ,这解决了问题。当我运行我的程序时,它返回

  

文件扩展名更改成功

谢谢大家的帮助。对此,我真的非常感激。

2 个答案:

答案 0 :(得分:1)

经典的Java File API在很多方面都非常有限。在这种情况下,您无法获得有关移动失败原因的反馈。

如果您使用的是Java 7,我的建议是切换到使用该版本中添加的nio文件功能。您不仅可以使用更新,更强大的API,而且还应该更好地了解您的副本失败的原因。这是您发布的代码的等效代码。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class MoveFile {
  public static void main(String[] arg) {
    Path file  = Paths.get("file.txt"); //File I want to change to .java
    Path file2 = Paths.get("file.java");

    try {
      Files.move(file, file2);
      System.out.println("file extension change successful");
    } catch (IOException e) {
       System.out.println("File extension change failed: " + e.getMessage());
       e.printStackTrace();
    }
  }
}

为了提高认知度,Oracle提供了一个很好的reference page,用于将旧文件代码转换为nio代码。

答案 1 :(得分:1)

源文件即 file.txt 应该存在于上述路径中(在您的情况下,它应该在eclipse项目文件夹中)并且没有目标文件名的文件,即文件。 java 应存在于上述路径中。 执行代码后,文件扩展名更改成功 file.txt 将消失,其内容将转移到 file.java