c# - 文件夹中可以存储的文件/文件夹是否有限制?

标签 c# windows filesystems

我们正在开发一个应用程序,适用于从 Windows XP SP 3 到 Windows 8 的所有操作系统。用户可以触发一些操作,从而将文件存储在硬盘上。目前,我们正在为用户在特定目标文件夹中执行的每个操作创建一个具有唯一名称的文件夹。

当前结构如下:

MyTargetFolder
|
|-- 0f8fad5b-d9cb-469f-a165-70867728950e
|     |--- SomeFile.txt
|     |--- AnotherFile.txt
|     
|-- 7c9e6679-7425-40de-944b-e07fc1f90ae7
|     |--- SomeFile.txt
|     |--- AnotherFile.txt
.
.

我想知道,是否有特定的最大文件夹数量,可以存储在另一个文件夹中 - 可能取决于操作系统,可能取决于文件系统(Fat32、NTFS,...?)。

  • 如果有限制 - 那是什么?
  • 如果没有一个文件夹的限制 - 一个完整驱动器上的文件夹总数是否有限制?
  • 当我尝试使用 Directory.CreateDirectory 从我的 C# 应用程序创建文件夹并且已达到文件夹的最大数量时,会发生什么情况?
  • 关于性能/索引 - 更改我们的结构并将文件夹分组到文件夹中是否更快?

像这样:

MyTargetFolder
|
|-- AllFoldersStartingWith0
|     |
|     |-- 0f8fad5b-d9cb-469f-a165-70867728950e
|           |--- SomeFile.txt
|           |--- AnotherFile.txt
|
|-- AllFoldersStartingWith7
|     |
|     |-- 7c9e6679-7425-40de-944b-e07fc1f90ae7
|           |--- SomeFile.txt
|           |--- AnotherFile.txt    .
.

(注意:当然,我们在生产中得到了 2 个以上的文件夹,因为用户执行的每个操作都会创建一个文件夹,并且我们将 GUID 作为文件夹名称。)

最佳答案

每个 Windows 版本对其可以存储在特定文件夹中的项目 [文件+文件夹] 的数量都有自己的限制。尽管此限制随着 x64 位系统而增加,但与原始性能相比,数字本身不再是问题。随着特定文件夹中项目 [文件或文件夹] 数量的增加,Windows 似乎变得极其缓慢。您肯定需要考虑 [或重新考虑] 访问这些文件的策略。

关于c# - 文件夹中可以存储的文件/文件夹是否有限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609186/

相关文章:

Windows 服务应用程序上的 Java5 - 获取 Full Thread Dump 需要说明

c - 为什么 MacOS 上的 c 函数 `open` 比同一台机器上的 Ubuntu VM 慢 4 倍?

c# - 在 Chrome 缓存中调试 MVC2 项目过于激进

C# 根据日期(月)和组拆分查询结果

c# - 如何重命名Azure存储(不是Blob存储)中的文件/目录(不是Blob文件)?

air - 解析标准目录之外的相对路径(applicationDirectory、desktopDirectory 等)

c# - 如何在不持续扫描的情况下检测目录或文件何时更改

c# - 使用 DataAnnotations 验证类

python - celery 任务总是挂起

c# - 插入windows键盘缓冲区