2013-02-14 1 views
0

Мне интересно, какие типы программного поведения считаются «изменением» файла в java. То есть, какие операции, которые я мог бы выполнить в файле, заставили бы вызов file.lastModified() изменить его значение?Какие действия я мог бы выполнить в файле, который вызовет вызов file.lastModified() для изменения его значения?

I.E. Открытие? Чтение? Письмо? Копирование? Написание является очевидным триггером, но другие не столь очевидны. Я сделал несколько оглядываний в Интернете и не видел ничего незамедлительного.

Уточнение: я не привязываю, чтобы установить последнее измененное время, я просто пытаюсь определить, какие программные поведения, которые могла бы задействовать Java-программа, заставили бы это значение обновляться. Очевидно, что запись в файл будет делать это. Но есть ли другие случаи, которые могут вызвать это?

+0

Флаг «Last Modified» является функцией операционной системы; java просто передает это значение вам. Все, что изменило бы один байт в файле, должно изменить дату «Last Modified»; так что [touch] (http://en.wikipedia.org/wiki/Touch_ (Unix)). –

+0

Спасибо за ваш комментарий, я понимаю, что флаг является функцией ОС. Я пытаюсь преследовать то, что может вызвать обновление этого флага из моей программы. – Nathaniel

+0

Вместо того, чтобы мы размышляли над тем, что может быть причиной, ваше время может быть лучше потрачено на отслеживание точки в вашем коде, с которой запускается изменение LastModified. –

ответ

0

Чтение зависит от открытия, Копирование зависит от чтения. Написание является единственным триггером для установки последней модификации. Как только вы открываете файл, в большинстве операционных систем вам нужно указать, с какими режимами вы хотите открыть файл. например rw или r или w или a (добавление) и т. Д. (Реализация/os зависит). Поскольку a включает в себя w, w - единственная операция, которая будет устанавливать штамп Last Modified.

Классы Java (такие как FileInputStream) откроют файл, определяющий r или «прочитанный», чтобы не запускать штамп LastModified. Java имеет различные классы для читателей и писателей - вход и выход. Классы ввода/чтения (Reader, InputStream) не будут устанавливать штамп LastModified. Тем не менее, простой Open For-Write (без фактической записи), скорее всего, также вызвать LastModified печать, т.е .:

new FileOutputStream(new File("path/to/file.extension")); 

, скорее всего, вызвать на LastModified набор.

С уважением.

+0

Не совсем правильно сказать, что это приведет к последнему измененному изменению. Он создаст целый новый файл с новой датой создания, а также новую дату последнего изменения. – EJP

+0

Только в том случае, если файл еще не существует. – Danyel

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