文件大小缓存和Java中文件大小的高效检索

bas*_*ter 1 java file filesize

我需要确定一个非常大的字符编码文件的大小.读取该文件需要花费大量时间.

我的理解是,当首次创建/修改文件时,大小会被缓存,因此操作系统可以在请求大小时(例如,文件管理器)快速检索该值.(例如,在win explorer中打开大文件的属性对话框时似乎很快)

假设以上情况属实,可以用Java检索吗?我原以为length()读取文件来确定大小......或者它实际上是否获得了这个缓存的大小?或者,File对象的创建是否会读取/检索缓存的大小?

我自己的研究还没有能够回答这些问题.

我理解我会得到一些帮助

谢谢

小智 5

getLength()委托底层本机操作系统函数来获取文件的长度.你应该没问题.


Pet*_*rey 5

文件系统通常将长度存储为文件描述的一部分.这样OS就知道文件末尾的位置.访问时会缓存此信息.并且对该信息的重复调用也将是缓存.

注意:操作系统通常会从磁盘读取的数据超出您的要求.这是因为访问磁盘很昂贵而且内存相对便宜.例如,当您获得一个文件的长度时,它可能会在许多文件的详细信息中读取,假设您可能还需要有关这些文件的信息.即,第一次获得文件的信息时,它可能已经被缓存.