2013-02-09 3 views
0

Я создал временный файл, написанный на него, и я хочу, чтобы перезаписать существующий файлОшибка перезаписи файла Java в моем коде

  1. Создать временный файл
  2. Заполните его
  3. Открыть старый файл
  4. Установить старый файл равного нового

Вот мой код, но он не работает

Пожалуйста, дайте мне знать, если вы можете найти проблему. Спасибо!

try{ 
      //create a temporary file 
      File temporary=File.createTempFile("tmp", ""); 
      BufferedWriter writer = new BufferedWriter(new FileWriter(temporary)); 
      //Write each line to file (temporary) 
      for (String string : parsedArticlesToSave) { 
       writer.write (String.format("%s\n", string)); 
      } 
      //load old file 
      File oldFile = new File("StringFile/ArticlesDB.txt"); 
      //replace old file with new file 
      oldFile=temporary; 
      //release resources 
      writer.close(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
+0

[Дублированные] (http://stackoverflow.com/questions/9887520/java-create-temp- file-and-replace-with-original) – Jayamohan

+0

Какая ошибка? – Walfie

+0

Это не внесение изменений в файл. Я думаю, что oldFile = временно; является ли это законным в java? –

ответ

1

Я думаю, вы поняли всю концепцию класса java.io.File

и не понимают концепцию присваивания значения переменной в Java.

Создание объекта этого класса java.io.File создает своего рода указатель на файл, так что вы можете операции с ним «в целом»

Так что вы сделали на «старый_файл = временный» просто сделал ваш указатель на oldFile указывать на временный. Но это делается только в контексте назначения переменных в Java, это не влияет на фактическую файловую систему.

Теперь о присвоении переменной.

Возьмите его с объектами: Допустим, у вас есть два целых числа:

Integer a = 5; 
Integer b = 10; 

Поступая 'B = а не на самом деле изменить объект б сам по себе, но вместо того, чтобы ваша ссылка на объект б становится ссылка на объект a. Старое значение объекта b по-прежнему сохраняется в памяти, но поскольку после присвоения ему никто не указывает (ссылается), он становится недоступным и в конечном итоге будет мусором.

Теперь относительно самого решения: Вы должны действительно скопировать содержимое временного файла к старой одной линии по линии побайтно), или если вы просто хотите, чтобы сделать старый файл, чтобы иметь одинаковое содержание и вы на самом деле не нужен временный файл только для удаления файла, а затем переименовать временный файл как «oldFile».

Вот ссылка о том, как использовать переименовать в Java: Renaming in Java

Надеется, что это помогает

Смежные вопросы