FileInputStream如何找到该文件?

时间:2014-09-30 21:33:01

标签: java windows file-io

我设计的程序需要从包含大约10 ^ 8个文件的文件夹中读取文件。

FileInputStream如何从它提供的文件名中找到所需的文件?它是否与具有O(1)查找时间的散列图类似,或者是否在找到匹配项之前线性遍历给定文件夹中的文件?

我想这可能与Windows文件存储的工作方式有关,而不是与FileInputStream有关,但我老实说不确定。

2 个答案:

答案 0 :(得分:4)

文件名传递给操作系统,它读取目录以查找匹配的名称。它可能会优化查找,但Java不会参与其中。

您可以考虑将文件分成多个目录,理想情况下使用较少的文件。打开和关闭许多小文件会花费大部分时间来打开和关闭文件描述符。发现和阅读通常要小得多。

答案 1 :(得分:3)

它要求操作系统找到该文件。操作系统是如何做到的?这取决于操作系统和文件系统。至少在某些情况下,答案是“是的,它的工作方式类似于HashMap”。另一方面,我知道至少有一些OS /文件系统组合,如果在同一目录中有超过几千个文件,就会严重陷入困境。