代码之家  ›  专栏  ›  技术社区  ›  Benjamin Pollack Stefan Rusek

Windows中临时目录的限制?

  •  4
  • Benjamin Pollack Stefan Rusek  · 技术社区  · 16 年前

    %TEMP% 文件夹。奇怪的是,每隔一段时间,它就会死去,回来 IOError: [Errno 28] No space left on device . 驱动器已关闭 大量 自由空间, 不是它自己的分区,我是管理员,系统没有配额。

    Windows是否人为地对中的数据设置了某些类型的限制 ? 如果没有,有什么想法可以导致这个问题?

    当前位置下面的讨论之后,我澄清了问题,以便更好地解释发生了什么。

    4 回复  |  直到 16 年前
        1
  •  10
  •   Mike Atlas    16 年前

    你是吗 creating too many temp files ?

    IOException,如果用于 创造超过 没有文件

    GetTempFileName方法将引发 文件名可用。解决 临时文件。

    需要注意的一点是,如果您间接使用Win32 API,并且仅使用它获取临时文件名,请注意,(间接)调用它时:

    创造 唯一命名的, 磁盘上的临时文件 并返回 该文件的完整路径。

    如果您正在使用该路径,但同时也在更改返回的值,请注意,您实际上可能正在创建一个0字节的文件以及一个附加文件(例如My_App_tmpxxx.tmp和tmpxxx.tmp)。

        2
  •  2
  •   Yannick Motton    16 年前

    使用FAT32文件系统,我可以想象这样的情况:

    • 将大量数据写入一个文件,您将达到4GB文件大小上限。
    • 或者当您创建大量小文件并达到每个目录2^16-2个文件的上限时。

    另一个限制是Mike Atlas提出的 GetTempFileName() tmpXXXX.tmp . 尽管您可能没有直接使用它,但请验证 %TEMP% 文件夹中没有太多(2^16)。

        3
  •  1
  •   Benjamin Pollack Stefan Rusek    16 年前

    Temp中不应该有这样的空间限制。如果你编写了应用程序,我建议你在ProgramData中创建文件。。。

        4
  •  0
  •   cpkilekofp    16 年前

    您的%TEMP%目录应该不会有任何问题。

    %TEMP%的托管卷的磁盘配额设置为多少?部分取决于应用程序本身正在执行的操作,其中一个应用程序可能会由于达到磁盘配额而抛出错误,如果该配额设置得过高,这将是一件痛苦的事情。如果配额非常高,请尝试降低配额,您可以作为管理员执行此操作。

    推荐文章