Запись Java в удаленный файл - PullRequest
       13

Запись Java в удаленный файл

11 голосов
/ 06 февраля 2012

Я использую FileWriter для записи в файл и заметил, что даже после удаления файла (вне процесса) FileWriter не выдает никаких исключений.

Это нормально?

Ответы [ 3 ]

15 голосов
/ 06 февраля 2012

Это зависит от вашей операционной системы:

  • В Windows вы обычно не сможете удалить открытый файл.
  • В Unix удаление открытого файла и продолжениеписать в него (или читать из него) вполне приемлемо.Как только вы удалите файл, у него больше не будет записи в каталоге.Однако его содержимое будет продолжать существовать на диске, пока файл не будет закрыт.Как только все открытые дескрипторы, относящиеся к файлу, закроются, ОС автоматически освободит место на диске.
1 голос
/ 06 февраля 2012

Да, это нормально. Используя большинство обычных способов ввода / вывода, если файл не существует, он создает его для вас. Это, конечно, в ожидании, что вы удалили его до того, как вы начали писать в него.

0 голосов
/ 06 февраля 2012

Файл может появляться более чем в одном месте (с жесткими ссылками). При удалении файла удаляется одна из жестких ссылок (возможно, единственная). Если есть ссылка где-то еще, файл все еще доступен.

Файлы, которые были удалены, но открыты, продолжают занимать дисковое пространство, и, если они достаточно велики, это может означать, что используемое вами пространство и размер всех файлов, которые вы можете найти на вашем диске, отличаются.

Кстати: вы можете читать / записывать содержимое открытого файла (удаленного или нет), если вы посмотрите в /proc/{pid}/fd/{fid}

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