Java: создать временный файл и заменить его оригиналом - PullRequest
3 голосов
/ 27 марта 2012

мне нужна помощь с созданием файла

В последние часы я пытаюсь работать с 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();
    }

Ответы [ 2 ]

4 голосов
/ 27 марта 2012
    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 голос
/ 27 марта 2012

вы можете напрямую перезаписать файл.или выполните следующие действия:

  1. создайте файл в том же каталоге с именем diff

  2. удалите старый файл

  3. переименовать новый файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...