我有以下问题:我有一些(二进制)文件,它们嵌入资源中。由于某些原因,我必须将这些文件暂时写在磁盘上。我应该如何继续?也许这可以使用GetRandomFilename()或GetTempFileName()?在C#中的磁盘上临时写入文件
回答
GetTempFileName()
是在这种情况下使用的逻辑。
正如leppie所说,确保在完成后删除文件以避免任何问题。 GetTempFileName()
如果用于创建超过65535个文件而不删除以前的临时文件,则会引发IOException。
您也可以创建一个Guid
并从中创建一个文件名。保证独特和快速。
GetTempFile完全慢,因为它必须扫描免费的文件名。它只是创建一个前缀并添加一个数字。如果该名称的文件已存在,则跳过该名称。如果您的临时文件夹已满,此检查需要时间。
也不可能指定应在哪个文件夹创建临时文件。 GetTempFile总是在Windows分区上创建临时文件。如果您创建大型临时文件,则需要指定它们应存储的位置。
这看起来像是一些不必要的额外步骤,但是如果您发现自己在GetTempFileName()的限制之外工作,即如果您需要超过65,535个文件,则会很有用。 – 2010-10-20 11:48:24
也完全无视窗口说你应该这样做的方式。 -1。 – TomTom 2010-10-20 12:04:04
- 1. 不写入磁盘的C++文件
- 2. 将System.Xml.XmlElement写入磁盘上的文件
- 3. 文件写入磁盘
- 4. 在磁盘上写上传的文件
- 5. Python何时将文件写入磁盘?
- 6. 在写入文件时减少磁盘访问次数C
- 7. 如何分配磁盘中的文件来写入数据C++
- 8. 什么时候文件实际上被写入磁盘?
- 9. 在Linux上将文件写入磁盘的最快方法
- 10. WordPress无法将文件写入磁盘
- 11. 强制将文件写入磁盘
- 12. 写入磁盘文件不正确
- 13. 写入磁盘的文件在一段时间后被删除
- 14. 将文本或HTML写入磁盘上的文件
- 15. 如何在磁盘上写入FileContentResult?
- 16. NSUserDefaults写入磁盘?
- 17. svn导入错误:无法将svndiff写入临时文件:磁盘上没有足够的空间
- 18. 使用节点将文件上传到流而不先写入临时文件磁盘?
- 19. 在Tomcat中写入临时文件
- 20. 为什么内存没有在C#在磁盘上写入文件后释放
- 21. 在Java播放时将mp3文件写入磁盘
- 22. 写入磁盘上的每个LBA
- 23. mmap写入磁盘上的文件(同步/异步)
- 24. 使用MailKit将消息写入磁盘上的文件夹
- 25. 是否将MultipartRequest中的Java File对象作为临时文件写入磁盘或存储在内存中?
- 26. C#读取/写入物理磁盘
- 27. C++ ofstream指针无法写入磁盘
- 28. 写入文件描述符3而不写入磁盘?
- 29. 在Django中从磁盘“上传”文件
- 30. 在clojure中写入大文件到磁盘
这两个应该工作。只记得事后清理,没有人喜欢脏的TEMP目录。 – leppie 2010-10-20 11:42:25
是的,一个同事犯了一个错误,认为Windows知道临时文件可以被删除,并且会定期清理它们。最终我们达到了最高限度,并且软件崩溃了。 – StriplingWarrior 2010-10-20 16:07:55