Windows临时目录详细信息(Java)

Ton*_*y R 9 java windows filesystems directory temp

我正在编写一个需要通用临时文件夹的程序.我正在尝试查找有关Windows Temp文件夹的详细信息.我知道有两条路 -

  1. 在AppData\Local\Temp \下的每个用户目录中,这可能会因Windows版本而有所变化?

  2. 在Temp \(C:\ Windows\Temp)下的系统文件夹中

我想知道Windows究竟对这些做了什么.如果Windows从任一位置删除文件,它何时会这样做?我应该如何/应该使用这些目录进行编程?

编辑:我实际上有一个更大的问题 - 由于某个引擎我间接运行我的程序,它使用我在临时目录中创建的文件,我需要一个不使用路径中的空格字符的临时目录.Windows上的Java的System.getProperty("java.io.tmpdir")为我提供了用户目录中的临时文件,在XP上的文档和设置...不好.有什么建议?这就是为什么我想知道C:\ Windows\Temp \目录......

chi*_*nto 10

这将为您提供Java中Windows临时目录的路径.

File.createTempFile("temp-file", "tmp").getParent()
Run Code Online (Sandbox Code Playgroud)


Jon*_*nna 3

不完全的。有一个用户和系统文件夹,其默认位置根据 Windows 版本、系统文件夹名称而变化,实际上在旧版本的 Windows 中,用户和系统情况都是相同的。但是,这些默认值可以被覆盖(它们位于我现在使用的系统上,它们与系统文件夹不在同一驱动器上)。

这些位置存储在系统变量中。一些框架(.NET、VB6,毫无疑问还有其他框架)为您提供了查找路径的便捷方法,而不必查找系统变量(例如.NET 中的 System.IO.Path.GetTempPath)。

Windows 不会为您清理临时文件夹(这就是为什么值得每隔几个月在您自己的计算机上清除旧文件),这取决于您是否玩得好。创建一个或多个不太可能使用任何其他软件正在使用的名称的文件(它们应该注意做同样的事情,因此任何名称都应该这样做,但假设系统上其他代码的最坏情况总是好的),并且完成后删除文件(或至少在应用程序退出时)。

在.NET中,System.IO.Path.GetTempFileName()将在临时区域中创建一个新文件并将其名称返回给您,这可以合理地保证不会与其他文件发生冲突,因此如果可以的话请使用该方法或类似的方法。