【问题标题】:Renaming a RandomAccessFile重命名 RandomAccessFile
【发布时间】:2017-06-18 13:13:36
【问题描述】:

我有一个名为 data.bin 的 RAF 和一个名为 temp.bin 的临时 RAF。

        data = new RandomAccessFile("data.bin","rws");
        temp = new RandomAccessFile("temp.bin","rws");

临时文件基本上是 data.bin 文件,但我更改了其中的信息。所以一旦我完成了对临时文件的更改,我该如何将 temp.bin 的名称更改为 data.bin 并删除旧的 data.bin?

我看到了一些关于使用 .renameTo() 重命名文件的事情,但这确实适用于 RandomAccessFile。而且我找不到任何类似 RAF 的方法

【问题讨论】:

    标签: java file-rename randomaccessfile


    【解决方案1】:

    RandomAccessFile 并非旨在替换 File 类。

    它的设计目的是让阅读文章或多或少。

    请使用 File 类进行重命名。

    【讨论】:

    • 所以我就这么做?文件 fdata = new File("data.bin");文件 ftemp = new File("temp.bin"); ftemp.renameTo(fdata); ftemp.delete();
    • 如果你重命名它我认为不需要删除。
    【解决方案2】:

    关闭 RAF 并使用 java.nio.file.Files.move 重命名临时文件。 File.renameTo 有一个缺点。如果它无法重命名文件,您将永远不知道为什么,因为它只是返回 true 或 false。如果失败,Files.move 会抛出 IOException。

    【讨论】:

      【解决方案3】:

      我有同样的问题。 我做了这样的事情:

      data.close();
      temp.close();
      File tempfile = new File("c:/.../temp.bin");
      File datafile = new File("c:/.../data.bin");
      tempfile.renameTo(datafile);
      

      欲了解更多信息:http://www.tutorialspoint.com/java/io/file_renameto.htm

      【讨论】:

      • 在重命名“temp”之前是否需要删除数据文件?
      • 我不这么认为,但是这段代码在这里停止工作了.-。我现在很纠结。它说文件没有关闭,但我用 data.close() 和 temp.close() 关闭...我试图关闭通道,但没有任何变化。现在我也需要帮助 kkkkk
      【解决方案4】:

      RandomAccessFile 的目的是读/写信息。要处理文件名、存在等,必须使用 File 类。

      在你的情况下,你应该这样做:

      File d = new File("data"); // Declare your data RAF through File
      RandomAccessFile data = new RandomAccessFile(d,"rws");
      
      public void foo(){
          File t = new File("temp"); // Declare your temp RAF through File
          RandomAccessFile temp = new RandomAccessFile(t,"rws");
          //TODO data RAF alteration
          data.close();
          d.delete(); //First delete data File, just in case
          temp.close();
          File f = new File("data");
          t.renameTo(f);
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多