6 ответов:
файл дата создания недоступна, а дата последнего изменения:
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<System.currentTimeMillis()) { f.delete(); } }
дата создания файла не является доступным фрагментом данных, предоставляемых Java
Fileкласса. Я рекомендую вам переосмыслить то, что вы делаете, и изменить свой план, чтобы он вам не понадобился.
есть альтернативный способ. При первом открытии файла сохраните последнюю измененную дату, прежде чем изменять папку.
long createdDate =new File(filePath).lastModified();и затем, когда вы закрываете файл делаем
File file =new File(filePath); file.setLastModified(createdDate);Если вы сделали это с момента создания файла, то вы будете иметь createdDate как lastModified дата все время.
начиная с уровня API 26, Вы можете сделать это:
File file = ...; BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class); long createdAt = attr.creationTime().toMillis();
хотя в API платформы Android может не быть метода для этого, есть kludges что будет работать в некоторых случаях. Вот один из них: запустить shellкоманда сделать
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не нужно . Еще хуже: на HTC Desire 550 (Android 7.0),lsкоманда утверждает, что принимает параметр-c, чтобы показать ctime, и если вы запуститеls -clвы получите вывод даты без ошибок. Но даты, указанной это действительно последнее время модификации, а не время создания! Таким образом, не только время создания не поддерживается, но и трудно обнаружить, что оно не поддерживается.
Comments