当前位置: 首页 > 面试题库 >

Java:创建临时文件并替换为原始文件

帅雅逸
2023-03-14
问题内容

我需要一些帮助来创建文件

我在过去的几个小时中尝试使用RandomAccessFile并尝试实现下一个逻辑:

  1. 获取文件对象
  2. 创建一个具有相似名称的临时文件(我如何确保将临时文件与给定的原始文件放置在同一位置?)
  3. 写入此文件
  4. 用临时文件替换磁盘上的原始文件(应使用原始文件名)。

我正在寻找一个简单的代码,谁喜欢使用RandomAccessFile,我只是不正确地解决这几个步骤。

编辑:好的,我把这个部分的代码附加了,我的问题是我不明白应该采取什么正确的步骤..文件没有被创建,我也不知道该怎么做。

        File tempFile = null;
    String[] fileArray = null;
    RandomAccessFile rafTemp = null;
    try {
        fileArray = FileTools.splitFileNameAndExtension(this.file);
        tempFile = File.createTempFile(fileArray[0], "." + fileArray[1],
                this.file); // also tried in the 3rd parameter this.file.getParentFile() still not working.
        rafTemp = new RandomAccessFile(tempFile, "rw");
        rafTemp.writeBytes("temp file content");
        tempFile.renameTo(this.file);
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        rafTemp.close();
    }

问题答案:

您可以直接覆盖文件。或执行以下操作

  1. 在具有diff名称的同一目录中创建文件

  2. 删除旧文件

  3. 重命名新文件



 类似资料:
  • 问题内容: 无论如何,我可以写到tempfile并将其包含在命令中,然后关闭/删除它。我想执行命令,例如:some_command / tmp / some-temp-file。 提前谢谢了。 问题答案: 如果需要带有名称的临时文件,则必须使用该功能。然后就可以使用了。有关详细信息,请阅读 http://docs.python.org/library/tempfile.html。

  • 问题 你需要在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉。 解决方案 tempfile 模块中有很多的函数可以完成这任务。 为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile : from tempfile import TemporaryFile with TemporaryFile('w+t') as f: # Read/writ

  • 问题内容: 有客观的更好的方法在bash脚本中创建临时文件吗? 我通常只要给他们起名就可以使用它们,例如tempfile-123,因为脚本结束后它将被删除。除了覆盖当前文件夹中可能的tempfile-123之外,这样做是否有其他缺点?还是以更谨慎的方式创建临时文件有什么好处? 问题答案: 该手册页解释了它相当好: 传统上,许多shell脚本使用pid作为后缀来命名程序名称,并将其用作临时文件名。这

  • 我已经创建了一个proto文件,其中包含我打算生成的REST Web服务的所有必要消息和rpc函数。使用proc-gen-swagger插件,我设法将该proto文件编译成一个swagger.json文件,一切似乎都很好,除了两件事,我似乎无法解决。 > swagger.json文件中的所有定义都以我的原始文件包的名称为前缀。有没有办法摆脱这个? 我的消息的所有字段都是“可选的”。它们没有被明确指

  • 我必须使用一个现有的方法,如其中有一个。 我的问题是,我正在检索一个字节[],我想用这个方法保存它。我怎样才能有一个仅用于保存的“本地”文件? 对不起,如果我的问题是愚蠢的,我不知道很多关于文件在Java。

  • 问题内容: 我正在使用XJC从XSD文件生成一堆.java文件。我还需要将这些文件编译为.class文件,并在运行时通过反射使用它们。 我遇到的问题是,在生成.java文件并尝试对其进行编译之后,编译器无法正确地对其进行编译,并给我以下错误: 我假设这与JVM不了解我刚刚生成的包,因此找不到引用的类有关。 这可以通过在生成.java文件后重新启动程序来解决。但是我很好奇,是否有一种方法可以在运行时