【问题标题】:How to change pathname of file in Java?如何在Java中更改文件的路径名?
【发布时间】:2020-03-02 15:57:01
【问题描述】:

我的文本编辑器中有一个“另存为...”功能。我想做一个另存为,保存到一个新文件,但是我要保存的永久文件现在应该始终是这个新文件。因此,当我单击另一个按钮“保存”时,将继续保存到使用 JFileChooser 选择的位置,而不是保存到以前的位置。

我有一个名为 currentFile 的文件对象,它应该链接到通过另存为选择的文件。我目前正在通过在我的按钮操作执行函数中创建一个名为 fileName 的文件来确保这一点,然后将 currentFile 设置为该文件

    File fileName = new File(fileChoice.getSelectedFile() + ".txt");
    currentFile = fileName;

我想知道是否可以在不创建新文件的情况下实现相同的目标..?在我看来,新文件的创建遵循File(String pathname) 构造函数,但似乎没有设置文件路径名的方法。

【问题讨论】:

  • 一般来说,移动文件的过程就是将文件复制到新位置,然后删除旧文件。
  • 我不太清楚你的意思,但它听起来就好像你想将现有File 对象的内容更改为指向另一个对象。这是不可能的,该类在设计上是不可变的(即,您无法更改 File 指向的内容,您可以创建一个具有不同值的新 File 对象)。但是由于File 是一个如此轻量级的对象(它基本上是一个String 的包装器),因此创建一个新的File 实例并不昂贵,所以不用担心。

标签: java swing file


【解决方案1】:

您无法更改文件路径,因为您可以在 docsthis answer 中阅读:

“File 类的实例是不可变的;也就是说,一旦创建,File 对象所代表的抽象路径名就永远不会改变”

所以你需要创建另一个 File 实例。

另外renameTo()方法使用另一个File实例作为参数来改变路径

File fileToMove = new File("path/to/your/oldfile.txt");
boolean isMoved = fileToMove.renameTo(new File("path/to/your/newfile.txt"));

您也可以阅读this article,重命名或移动文件有多种方法。

【讨论】:

    【解决方案2】:

    您要求更改路径名,但您真正想要的是移动文件。 Files#move 为您执行此操作。

    Path path = Paths.get("my", "path", "to", "file.txt");
    
    Path moveToPath = Paths.get("my", "path", "to", "moved", "file.txt");
    
    Path moveResult = Files.move(path, moveToPath, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.ATOMIC_MOVE);
    
    if (!moveToPath.equals(moveResult)) {
        throw new IllegalStateException("Unable to move file to requested location.");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多