- Определение даты создания файла в Java
- 1. Обзор
- 2. Files.getAttribute
- 3. Файлы.Атрибуты чтения
- 4. Заключение
- Определить дату создания файла в Java
- 1. Обзор
- 2. Files.getAttribute
- 3. Files.readAttributes
- 4. Вывод
- Android: Как получить дату создания файла?
- 6 ответов
- Класс File
- Методы класса File
- Каталог
- Список каталогов
- Метод listFiles()
- Работа с файловой системой
- Чтение и сохранение файлов
Определение даты создания файла в Java
JDK 7 представил способ просмотра даты создания файла. Узнайте, что это такое.
Автор: Łukasz Ryś
Дата записи
1. Обзор
В JDK 7 появилась возможность получить дату создания файла.
В этом уроке мы узнаем, как получить к нему доступ через java.nio .
2. Files.getAttribute
Один из способов получить дату создания файла – использовать метод Files.getAttribute с заданным Путем :
Тип CreationTime – это FileTime , но из-за того, что метод возвращает Объект, мы должны привести его .
FileTime содержит значение даты в качестве атрибута метки времени. Например, он может быть преобразован в Instant с помощью метода to Instant () .
Если файловая система не хранит дату создания файла, то метод вернет null .
3. Файлы.Атрибуты чтения
Другой способ получить дату создания-с помощью Files.readAttributes , который для заданного Пути возвращает все основные атрибуты файла сразу:
Метод возвращает атрибуты BasicFileAttributes, которые мы можем использовать для получения основных атрибутов файла. Метод creation Time() возвращает дату создания файла как File Time .
На этот раз, если файловая система не хранит дату создания файла, то метод вернет дату последнего изменения . Если дата последнего изменения также не сохранена, то будет возвращена эпоха (01.01.1970).
4. Заключение
В этом уроке мы узнали, как определить дату создания файла в Java. В частности, мы узнали, что можем сделать это с помощью Files.getAttribute и Files.readAttributes .
Как всегда, код для примеров доступен на GitHub .
Источник
Определить дату создания файла в Java
1. Обзор
В JDK 7 появилась возможность получать дату создания файла.
В этом руководстве мы узнаем, как получить к нему доступ через java.nio .
2. Files.getAttribute
Один из способов узнать дату создания файла — использовать метод Files.getAttribute с заданным путем :
Тип CreationTime является FileTime , но из — за того , что метод возвращает Object, мы должны бросить его .
FileTime содержит значение даты как атрибут отметки времени. Например, его можно преобразовать в Instant с помощью метода toInstant () .
Если файловая система не хранит дату создания файла, метод вернет null .
3. Files.readAttributes
Другой способ получить дату создания — использовать Files.readAttributes, который для заданного пути возвращает все основные атрибуты файла сразу:
Метод возвращает BasicFileAttributes, который мы можем использовать для получения основных атрибутов файла. Метод createTime () возвращает дату создания файла как FileTime .
На этот раз, если файловая система не хранит дату создания файла, метод вернет дату последнего изменения . Если дата последнего изменения также не сохранена, то будет возвращена эпоха (01.01.1970).
4. Вывод
В этом руководстве мы узнали, как определить дату создания файла в Java. В частности, мы узнали, что можем сделать это с помощью Files.getAttribute и Files.readAttributes .
Как всегда, код примеров доступен на GitHub.
Источник
Android: Как получить дату создания файла?
6 ответов
файл дата создания недоступна, а дата последнего изменения:
вот как бы я это сделал
дата создания файла не является доступной частью данных, предоставляемых Java File класса. Я рекомендую вам переосмыслить то, что вы делаете, и изменить свой план, чтобы он вам не понадобился.
есть альтернативный способ. При первом открытии файла сохраните дату lastModified, прежде чем изменять папку.
а затем, когда вы закрываете файл do
Если вы сделали это с момента создания файла, то у вас будет createdDate как lastModified дата все время.
начиная с уровня API 26, Вы можете сделать следующее:
хотя в API платформы Android не может быть никакого метода для этого, есть kludges это сработает в некоторых случаях. Вот один: запустите shell команда сделать
согласно выходу ls —usage на -c опция сообщает ls «использовать ctime для временных меток». На моем Galaxy J3 (Android 7) он производит
из которого вы можете извлечь дату и время. К сожалению, вы не контролируйте формат даты, и нет никакой информации о часовом поясе, используемом для отображения. Но это лучше, чем ничего.
отказ от ответственности: это не работает на некоторых других устройствах Android. Например. на Huawei H30 под управлением Android 4.2.2, ls не нужно . Хуже того: на HTC Desire 550 (Android 7.0), ls команда утверждает, что принимает параметр-c, чтобы показать ctime, и если вы запустите ls -cl вы получите вывод даты без ошибок. Но дата указана это действительно последнее время модификации, а не время создания! Таким образом, не только время создания не поддерживается, но и трудно обнаружить, что оно не поддерживается.
Источник
Класс File
В отличие от большинства классов ввода/вывода, класс File работает не с потоками, а непосредственно с файлами. Данный класс позволяет получить информацию о файле: права доступа, время и дата создания, путь к каталогу. А также осуществлять навигацию по иерархиям подкаталогов.
Класс java.io.File может представлять имя определённого файла, а также имена группы файлов, находящихся в каталоге. Если класс представляет каталог, то его метод list() возвращает массив строк с именами всех файлов.
Для создания объектов класса File можно использовать один из следующих конструкторов.
- File(File dir, String name) — указывается объекта класса File (каталог) и имя файла
- File(String path) — указывается путь к файлу без указания имени файла
- File(String dirPath, Sring name) — указывается путь к файлу и имя файла
- File(URI uri) — указывается объекта URI, описывающий файл
Методы класса File
Класс File может использоваться для создания каталога или дерева каталогов. Также можно узнать свойства файлов (размер, дату последнего изменения, режим чтения/записи), определить к какому типу (файл или каталог) относится объект File, удалить файл. У класса очень много методов, перечислим некоторые.
- getAbsolutePath() — абсолютный путь файла, начиная с корня системы. В Android корневым элементом является символ слеша (/)
- canRead() — доступно для чтения
- canWrite() — доступно для записи
- exists() — файл существует или нет
- getName() — возвращает имя файла
- getParent() — возвращает имя родительского каталога
- getPath() — путь
- lastModified() — дата последнего изменения
- isFile() — объект является файлом, а не каталогом
- isDirectory — объект является каталогом
- isAbsolute() — возвращает true, если файл имеет абсолютный путь
- renameTo(File newPath) — переименовывает файл. В параметре указывается имя нового имени файла. Если переименование прошло неудачно, то возвращается false
- delete() — удаляет файл. Также можно удалить пустой каталог
Каталог
Каталог — это объект класса File, который содержит список других файлов и каталогов. После создания объекта класса File, являющего каталогом, его метод isDirectory() вернёт значение true. И тогда вы можете вызывать метод list().
Для создания каталога можно использовать метод mkdir(), который вернёт true в успешном случае. Если указанный путь уже существует или каталог нельзя создать из-за отсутствия полного пути к нему, то вернётся false.
Метод mkdirs() создаёт сам каталог, так и всех его родителей.
Список каталогов
Если вы хотите получить содержимое каталога, то можно вызвать метод list() без аргументов. Вам вернётся полный список (массив) имён файлов и каталогов, содержащихся в данном каталоге. Есть ещё похожий метод listFiles(), который возвращает массив файлов (объектов, а не их имён), о котором поговорим отдельно.
Если вам нужен только список файлов с расширением .java, то можно использовать специальный фильтр-класс, который описывает критерии отбора объектов File с помощью интерфейса FilenameFilter.
Интерфейс FilenameFilter определяет единственный метод accept(), вызываемый по одному разу с каждым файлом в списке.
Метод возвращает true для файлов каталога, указанного в dir, которые должны быть включены в список, и false — для файлов, которые следует исключить.
Метод listFiles()
Метод имеет несколько перегруженных версий. Он возвращает список файлов в виде массива объектов класса File. Одна из версий метода также использует интерфейс FilenameFilter. Другая версия использует интерфейс FileFilter и возвращает те файлы, путевые имена которых соответствует интерфейсу.
Пример использования методов класса File показан в уроке Файловый менеджер и в других примерах.
Источник
Работа с файловой системой
Чтение и сохранение файлов
Работа с настройками уровня activity и приложения позволяет сохранить небольшие данные отдельных типов (string, int), но для работы с большими массивами данных, такими как графически файлы, файлы мультимедиа и т.д., нам придется обращаться к файловой системе.
ОС Android построена на основе Linux. Этот факт находит свое отражение в работе с файлами. Так, в путях к файлам в качестве разграничителя в Linux использует слеш «/», а не обратный слеш «\» (как в Windows). А все названия файлов и каталогов являются регистрозависимыми, то есть «data» это не то же самое, что и «Data».
Приложение Android сохраняет свои данные в каталоге /data/data/ / и, как правило, относительно этого каталога будет идти работа.
Для работы с файлами абстрактный класс android.content.Context определяет ряд методов:
boolean deleteFile (String name) : удаляет определенный файл
String[] fileList () : получает все файлы, которые содержатся в подкаталоге /files в каталоге приложения
File getCacheDir() : получает ссылку на подкаталог cache в каталоге приложения
File getDir(String dirName, int mode) : получает ссылку на подкаталог в каталоге приложения, если такого подкаталога нет, то он создается
File getExternalCacheDir() : получает ссылку на папку /cache внешней файловой системы устройства
File getExternalFilesDir(String type) : получает ссылку на каталог /files внешней файловой системы устройства
File getFileStreamPath(String filename) : возвращает абсолютный путь к файлу в файловой системе
FileInputStream openFileInput(String filename) : открывает файл для чтения
FileOutputStream openFileOutput (String name, int mode) : открывает файл для записи
Все файлы, которые создаются и редактируются в приложении, как правило, хранятся в подкаталоге /files в каталоге приложения.
Для непосредственного чтения и записи файлов применяются также стандартные классы Java из пакета java.io.
Итак, применим функционал чтения-записи файлов в приложении. Пусть у нас будет следующая примитивная разметка layout:
Поле EditText предназначено для ввода текста, а TextView — для вывода ранее сохраненного текста. Для сохранения и восстановления текста добавлены две кнопки.
Теперь в коде Activity пропишем обработчики кнопок с сохранением и чтением файла:
При нажатии на кнопку сохранения будет создаваться поток вывода FileOutputStream fos = openFileOutput(FILE_NAME, MODE_PRIVATE)
В данном случае введенный текст будет сохраняться в файл «content.txt». При этом будет использоваться режим MODE_PRIVATE
Система позволяет создавать файлы с двумя разными режимами:
MODE_PRIVATE : файлы могут быть доступны только владельцу приложения (режим по умолчанию)
MODE_APPEND : данные могут быть добавлены в конец файла
Поэтому в данном случае если файл «content.txt» уже существует, то он будет перезаписан. Если же нам надо было дописать файл, тогда надо было бы использовать режим MODE_APPEND:
Для чтения файла применяется поток ввода FileInputStream :
Подробнее про использование потоков ввода-вывода можно прочитать в руководстве по Java: https://metanit.com/java/tutorial/6.3.php
В итоге после нажатия кнопки сохранения весь текст будет сохранен в файле /data/data/название_пакета/files/content.txt
Где физически находится созданный файл? Чтобы увидеть его на подключенном устройстве перейдем в Android Stud в меню к пункту View -> Tool Windows -> Device File Explorer
После этого откроектся окно Device File Explorer для просмотра файловой системы устройства. И в папке data/data/[название_пакета_приложения]/files мы сможем найти сохраненный файл.
Источник