安卓文件的创建日期

6

如何在Android中获取文件的创建日期。我知道file.lastModified(),但我真的需要创建日期,就像在Windows OS的文件属性中看到的那样。

如果有人知道这个任务的解决方案,请在此消息下面写出来。 谢谢!

3个回答

4

并非所有操作系统都支持创建日期,这就是为什么Java没有获取文件创建日期的方法。最近我也遇到了这个问题。

我的解决方法是在文件名后面添加时间戳作为附录。

File f = new File("myFile-" + System.currentTimeMillis());

当您稍后查找文件时,您可以提取附录并将其转换回日期以查找其创建日期。
String fileName = f.getName();
String[] split = fileName.split("-");
long timeStamp = 0;

try {
    timeStamp = Long.parseLong(split[1]);
} catch(NumberFormatException nfe) {
    nfe.printStackTrace();
}

System.out.println("Creation date for file " + f + " is " + new Date(timeStamp));

1
实际上,我需要文件的创建日期来进行一些副本保护,所以这个解决方案不适合我。 - Slavik Blase

0

这仅适用于API 26及以上版本

@RequiresApi(Build.VERSION_CODES.O)
private fun getDate(file: File): String {
   val basicFileAttributes =
   Files.readAttributes(file.toPath(),BasicFileAttributes::class.java)
   val fileTimeStr = basicFileAttributes.creationTime().toString()
   return fileTimeStr.split("T")[0].split("-").reversed().joinToString("/")
}

@RequiresApi(Build.VERSION_CODES.O)
    private fun getTime(file: File): String{
    val basicFileAttributes = 
         Files.readAttributes(file.toPath(),BasicFileAttributes::class.java)     
    val fileTimeStr = basicFileAttributes.creationTime().toString()
    return fileTimeStr.split("T")[1].substringBeforeLast(":")
}

-1
我找到了我的问题的解决方案,也许有人需要它: 你可以通过执行类似这里描述的bash命令或脚本来获取创建日期。
stat <filepath>

在安卓上执行脚本的方法:

p = Runtime.getRuntime().exec("stat " + /mnt/sdcard01/somefile);
p.waitFor();

BufferedReader reader = 
     new BufferedReader(new InputStreamReader(
 p.getInputStream()));
String line = reader.readLine();
while (line != null) {
 line = reader.readLine();
}

1
在您分享的博客中,作者已在评论中承认Creation Time是一个拼写错误,Linux / Unix不支持创建时间。 - Ankit Bansal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接