Android: Как получить дату создания файла?

Это мой код:

File TempFiles = new File(Tempfilepath); if (TempFiles.exists()) { String[] child = TempFiles.list(); for (int i = 0; i < child.length; i++) { Log.i("File: " + child[i] + " creation date ?"); // how to get file creation date..? } } 

Дата создания файла недоступна , но вы можете получить дату последнего изменения :

 File file = new File(filePath); Date lastModDate = new Date(file.lastModified()); Log.i("File last modified @ : "+ lastModDate.toString()); 

Вот как я это сделаю

 // Used to examplify deletion of files more than 1 month old // Note the L that tells the compiler to interpret the number as a Long final int MAXFILEAGE = 2678400000L; // 1 month in milliseconds // Get file handle to the directory. In this case the application files dir File dir = new File(getFilesDir().toString()); // Obtain list of files in the directory. // listFiles() returns a list of File objects to each file found. File[] files = dir.listFiles(); // Loop through all files for (File f : files ) { // Get the last modified date. Milliseconds since 1970 Long lastmodified = f.lastModified(); // Do stuff here to deal with the file.. // For instance delete files older than 1 month if(lastmodified+MAXFILEAGE 

Дата создания файла не является доступной частью данных, открытой classом Java File . Я рекомендую вам переосмыслить, что вы делаете, и изменить свой план, чтобы он вам не понадобился.

Существует альтернативный путь. Когда вы впервые открываете файл, сохраните последнюю дату с модификацией, прежде чем изменять папку.

 long createdDate =new File(filePath).lastModified(); 

И тогда, когда вы закрываете файл,

 File file =new File(filePath); file.setLastModified(createdDate); 

Если вы это сделали, так как файл был создан, то вы будете иметь созданную дату как последнюю дату.

Начиная с уровня API 26, вы можете сделать это:

 File file = ...; BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class); long createdAt = attr.creationTime().toMillis(); 

Хотя в API платформы Android не может быть никакого метода, в некоторых случаях есть клоды, которые будут работать. Вот один: запустите команду оболочки, чтобы сделать

 ls -gnc filename 

Согласно ls --usage , опция -c указывает ls на «использование ctime для временных меток». На моей Galaxy J3 (Android 7) она производит

 -rwxrwx--x 1 1015 7623004 2018-03-28 10:54 filename 

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

Отказ от ответственности. Это не работает на некоторых других устройствах Android. Например, на Huawei H30 под управлением Android 4.2.2, ls не принимает параметр -c . Хуже того: на HTC Desire 550 (Android 7.0) команда ls утверждает, что принимает параметр -c, чтобы показать ctime, и если вы запустите ls -cl вы получите вывод даты без ошибок. Но указанная дата – это действительно последнее время модификации, а не время создания! Таким образом, время создания не только не поддерживается, но и трудно обнаружить, что оно не поддерживается.

  • Как я могу использовать frameworks анимации внутри canvasа?
  • Как получить исходный код HTML из url в android?
  • Android Как использовать MediaScannerConnection scanFile
  • Как открыть программу электронной почты через Intents (но только программу электронной почты)
  • Как прослушивать дуплекс на представлении в Android?
  • Я пытаюсь найти поблизости такие места, как банки, рестораны, банкоматы внутри рисованной области на картах Google в андроиде
  • Почему для местоположения игровых сервисов необходимы разрешения android.permission.WRITE_EXTERNAL_STORAGE и android.permission.READ_EXTERNAL_STORAGE?
  • Обратный вызов fragmentа из диалогового windows
  • Возможно ли иметь ViewPager внутри ScrollView?
  • Уведомление об уведомлении Android O не отправлено на канал - но это
  • Зачем объявлять аргумент функции окончательным?
  • Давайте будем гением компьютера.