【问题标题】:Why cant I change the the file extension of a desired file in java?为什么我不能在java中更改所需文件的文件扩展名?
【发布时间】:2015-11-05 03:04:02
【问题描述】:

我不明白为什么我的代码拒绝将我的 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。

已修复:

问题的原因: 我已将要更改的文件 file.txt 放在我的项目文件夹内的包文件夹中。 C:\Users\Acer\workspace\MyProjectName\src\MyPackageName。因此系统无法找到该文件。

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

文件扩展名更改成功

.

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

【问题讨论】:

  • 在重命名之前尝试添加System.out.println("Exists: " + file.exists());。还要确保该文件未被任何其他应用程序打开,并且您对该文件/文件夹具有读/写权限

标签: java eclipse windows file


【解决方案1】:

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

【讨论】:

  • 谢谢,我发现了问题:我把想要的文件放在了项目文件夹内的包文件夹中。 解决方案是简单地将所需文件移动到主项目文件夹:C:\Users\Acer\workspace\MyProjectName。
【解决方案2】:

经典的 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 代码。

【讨论】:

  • 感谢您的帮助,我使用了您推荐的代码,发现问题是找不到文件。原来是我把它放在包文件夹里弄错了:C:\Users\Acer\workspace\MyProjectName\src\MyPackageName。我实际上必须放入项目文件夹的位置:C:\Users\Acer\workspace\MyProjectName.
猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 2013-05-20
  • 1970-01-01
  • 2011-02-23
  • 2013-01-30
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多