2025年3月25日 星期二 甲辰(龙)年 月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 编程箴言

文件最后修改时间

时间:02-06来源:作者:点击数:53

据说,在Linux系统中,文件是没有创建时间属性的,只有最后修改时间,在File对象的jdk文档中确实只有获取最后修改时间的函数,没有创建时间的函数,如下:

long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。

示例如下:

  • fun main() {
  • val file = File("D:/text.txt")
  • val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
  • val getCurrent = { formatter.format(System.currentTimeMillis()) }
  • val getFileTime = { formatter.format(file.lastModified()) }
  • println("1 current = ${getCurrent()}, file = ${getFileTime()}")
  • Thread.sleep(2000)
  • if (!file.exists()) {
  • file.createNewFile()
  • println("2 current = ${getCurrent()}, file = ${getFileTime()}")
  • }
  • Thread.sleep(2000)
  • val fos = FileOutputStream(file)
  • var current = getCurrent()
  • fos.write("${current}\n".toByteArray(Charsets.UTF_8))
  • println("3 current = ${current}, file = ${getFileTime()}")
  • Thread.sleep(2000)
  • var read = String(FileInputStream(file).readBytes(), Charsets.UTF_8)
  • println("4 current = ${getCurrent()}, file = ${getFileTime()}, read = $read")
  • Thread.sleep(2000)
  • current = getCurrent()
  • fos.write("${current}\n".toByteArray(Charsets.UTF_8))
  • println("5 current = ${current}, file = ${getFileTime()}")
  • Thread.sleep(2000)
  • fos.close()
  • read = String(FileInputStream(file).readBytes(), Charsets.UTF_8)
  • println("6 current = ${getCurrent()}, file = ${getFileTime()}, read = $read")
  • }

输出结果如下:

  • 1 current = 2021-04-14 15:13:37.469, file = 1970-01-01 08:00:00.000
  • 2 current = 2021-04-14 15:13:39.479, file = 2021-04-14 15:13:39.478
  • 3 current = 2021-04-14 15:13:41.494, file = 2021-04-14 15:13:41.497
  • 4 current = 2021-04-14 15:13:43.511, file = 2021-04-14 15:13:41.497, read = 2021-04-14 15:13:41.494
  • 5 current = 2021-04-14 15:13:45.514, file = 2021-04-14 15:13:45.514
  • 6 current = 2021-04-14 15:13:47.528, file = 2021-04-14 15:13:45.514, read = 2021-04-14 15:13:41.494
  • 2021-04-14 15:13:45.514

共有6行输出语句,每一行输出分析如下:

  1. val file = File(“D:/text.txt”),此时文件还没有创建,则它的lastModified()为1970-01-01 08:00:00.000
  2. file.createNewFile(),此时lastModified()和文件创建时间是一样的
  3. fos.write(),lastModified()为最后写入的那个字节的那一刻的时间。
  4. fis.read(),这里可以看到写入的一个时间,且此时fos流并没有关闭,这说明输出流没关的时候,还是可以正常读取的,并没有发生异常。而且读取文件并不会改变lastModified()的返回值。
  5. fos.write(),lastModified()为最后写入的那个字节的那一刻的时间。
  6. fos.close、fis.read(),这里可以看到写入的两个时间,lastModified()与第5步的时间相同,因为这里只是关流和读取内容,并没有写入新内容。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门