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

时间:2012-03-27 10:14:10

标签: java file

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

我在最后几个小时尝试使用RandomAccessFile并尝试实现下一个逻辑:

  1. 获取文件对象
  2. 创建一个名称相似的临时文件(如何确保临时文件将在给定原始文件的同一位置创建?)
  3. 写入此文件
  4. 用临时文件替换磁盘上的原始文件(应该是原始文件名)。
  5. 我寻找一个简单的代码,他更喜欢使用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();
        }
    

2 个答案:

答案 0 :(得分:4)

    try {
  // Create temp file.
  File temp = File.createTempFile("TempFileName", ".tmp", new File("/"));
  // Delete temp file when program exits.
  temp.deleteOnExit();
  // Write to temp file
  BufferedWriter out = new BufferedWriter(new FileWriter(temp));
  out.write("Some temp file content");
  out.close();
  // Original file
  File orig = new File("/orig.txt");
  // Copy the contents from temp to original file  
  FileChannel src = new FileInputStream(temp).getChannel();
  FileChannel dest = new FileOutputStream(orig).getChannel();
  dest.transferFrom(src, 0, src.size());

  } catch (IOException e) { // Handle exceptions here}

答案 1 :(得分:1)

你可以直接覆盖文件。或者按照

进行操作
  1. 使用diff name

  2. 在同一目录中创建文件
  3. 删除旧文件

  4. 重命名新文件