Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中获取和设置文件的创建、访问和修改时间?_Java_Linux_File_Unix - Fatal编程技术网

如何在Java中获取和设置文件的创建、访问和修改时间?

如何在Java中获取和设置文件的创建、访问和修改时间?,java,linux,file,unix,Java,Linux,File,Unix,我正在尝试使用文件的readAttributes函数使用Java文件库获取文件属性,因为我必须在执行任务后设置它们。但是函数返回的map的访问和修改时间的输出与stat命令输出的访问和修改时间不匹配。您可以看到Java输出的精度是digits和stat命令显示到9位 从Java.nio.Files API readAttributes()函数映射文件属性的输出- {owner=root, **lastAccessTime=2020-09-25T07:39:28.534538Z, lastMod

我正在尝试使用文件的readAttributes函数使用Java文件库获取文件属性,因为我必须在执行任务后设置它们。但是函数返回的map的访问和修改时间的输出与stat命令输出的访问和修改时间不匹配。您可以看到Java输出的精度是digits和stat命令显示到9位

从Java.nio.Files API readAttributes()函数映射文件属性的输出-

{owner=root, **lastAccessTime=2020-09-25T07:39:28.534538Z, 
lastModifiedTime=2020-09-25T07:39:28.534538Z**, gid=0, creationTime=2020-09-25T07:39:28.534538Z, isRegularFile=true, nlink=1, fileKey=(dev=35,ino=1574645), ino=1574645, mode=33188, 
uid=0, size=0, dev=53, isSymbolicLink=false, 
permissions=[OWNER_READ, OTHERS_READ, GROUP_READ, OWNER_WRITE], 
rdev=0, ctime=2020-09-25T07:39:28.534538Z, isOther=false, isDirectory=false, group=root}
linux命令行中“stat filename.txt”命令的输出

$stat ef1.txt
File: ef1.txt
Size: 0               Blocks: 0          IO Block: 1048576 regular empty file
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
**Access: 2020-09-25 07:39:28.534538886 +0000
Modify: 2020-09-25 07:39:28.534538886 +0000**
Change: 2020-09-25 07:39:28.534538886 +0000
Birth: -
当我们使用java.nio.Files API中的setAttribute()再次将Map的上述属性设置回文件时,stat命令显示

$ stat ef1.txt
File: ef1.txt
Size: 183             Blocks: 8          IO Block: 1048576 regular file
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
**Access: 2020-09-25 07:39:28.534538000 +0000
Modify: 2020-09-25 07:39:28.534538000 +0000**
Change: 2020-09-25 07:56:04.533689988 +0000
Birth: -
您可以看到access和modified time中的最后3位数字设置为零。 有没有办法将stat命令中显示的访问和修改时间完全相同地设置为java文件?
java中是否有任何方法可以获得epoch格式的访问和修改时间,并将其设置为相同的epoch时间并实现此目的?

这似乎在java 14中是固定的。我现在正在使用java 8。这方面有什么解决方案或解决方法吗?我所知道的唯一解决方法是运行
stat-c%x
stat-c%y
读取时间,以及
touch-a
touch-m
设置时间。你也需要它在非Linux系统中工作吗?是的。我将来必须为windows添加它。还要使用什么命令读取和设置创建时间?您可以使用
stat-c%w
读取创建时间
touch
for Linux似乎无法设置它。据我所知,ext4文件系统不存储文件的创建时间
stat-c%w
将为ext4文件打印一个连字符(
-
),而不是时间戳。