Java - 如何设置1970年之前的文件时间?

问题描述 投票:0回答:1

使用以下代码

long newDate = Date.parse("12 Oct 1960 13:25:00");
file.setLastModified(newDate);

我明白了

java.lang.IllegalArgumentException: Negative time

并使用此代码

long newDate = Date.parse("12 Oct 1960 13:25:00");
Files.setAttribute(file.toPath(), "lastModifiedTime", FileTime.fromMillis(newDate));

我使用 Linux 文件管理器得到

unknown date

java datetime file-io
1个回答
0
投票

我相信这是不可能的,因为文件系统使用的 UNIX 时间戳是用自 1970 年以来的秒数表示的(对于大多数 Linux 文件系统,如 EXT,实际上是毫秒)。

这意味着低于 1970 的文件时间实际上会回滚,并且取决于文件系统中存储的文件戳的整数大小。如果 UNIX 时间戳以 32 位存储,则 1970 - 1 将是 2038 年。如果是 64 位,则会下溢到更大的年份。

可以通过将其设置为有符号整数来使 Java 保持沉默,以确保该值不是负数,但在传递给 setLastModified 函数之前会自动下溢。

© www.soinside.com 2019 - 2024. All rights reserved.