Limitations of TEMP directory in Windows?

前端 未结 4 571
长发绾君心
长发绾君心 2021-01-19 00:09

I have an application written in Python that\'s writing large amounts of data to the %TEMP% folder. Oddly, every once and awhile, it dies, returning IOEr

相关标签:
4条回答
  • 2021-01-19 00:31

    Using a FAT32 filesystem I can imagine this happening when:

    • Writing a lot of data to one file, and you reach the 4GB file size cap.
    • Or when you are creating a lot of small files and reaching the 2^16-2 files per directory cap.

    Apart from this, I don't know of any limitations the system can impose on the temp folder, apart from the phyiscal partition actually being full.

    Another limitation is as Mike Atlas has suggested the GetTempFileName() function which creates files of type tmpXXXX.tmp. Although you might not be using it directly, verify that the %TEMP% folder does not contain too many of them (2^16).

    And maybe the obvious, have you tried emptying the %TEMP% folder before running the utility?

    0 讨论(0)
  • 2021-01-19 00:36

    There should be no trouble whatsoever with regard to your %TEMP% directory.

    What is your disk quota set to for %TEMP%'s hosting volume? Depending in part on what the apps themselves are doing, one of them may be throwing an error due to the disk quota being reached, which is a pain if this quota is set unreasonably high. If the quota is very high, try lowering it, which you can do as Administrator.

    0 讨论(0)
  • 2021-01-19 00:52

    There shouldn't be such space limitation in Temp. If you wrote the app, I would recommend creating your files in ProgramData...

    0 讨论(0)
  • 2021-01-19 00:55

    What is the exact error you encounter?

    Are you creating too many temp files?

    The GetTempFileName method will raise an IOException if it is used to create more than 65535 files without deleting previous temporary files.

    The GetTempFileName method will raise an IOException if no unique temporary file name is available. To resolve this error, delete all unneeded temporary files.

    One thing to note is that if you're indirectly using the Win32 API, and you're only using it to get temp file names, note that while (indirectly) calling it:

    Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file.

    If you're using that path but also changing the value returned, be aware you might actually be creating a 0byte file and an additional file on top of that (e.g. My_App_tmpXXXX.tmp and tmpXXXX.tmp).

    As Nestor suggested below, consider deleting your temp files after you're done using them.

    0 讨论(0)
提交回复
热议问题