我正在编写一个需要通用临时文件夹的程序。我正在尝试查找有关Windows Temp文件夹的详细信息。我知道有两条路径 -
在AppData \ Local \ Temp \下的每个用户目录中 这可能会因Windows版本而有所变化?
在Temp \(C:\ Windows \ Temp)
我想知道Windows究竟对这些做了什么。如果Windows从任一位置删除文件,它什么时候删除?我应该如何/应该使用这些目录进行编程?
编辑:我实际上有一个更大的问题 - 由于某个引擎我间接运行我的程序,它使用我在临时目录中创建的文件,我需要一个不使用空格字符的临时目录在路上。 Windows上的Java的System.getProperty(“java.io.tmpdir”)为我提供了用户目录中的临时文件,在XP上的文档和设置... 不好。有什么建议?这就是我想知道C:\ Windows \ Temp \目录...... 的原因答案 0 :(得分:10)
这将为您提供Java中Windows临时目录的路径。
File.createTempFile("temp-file", "tmp").getParent()
答案 1 :(得分:3)
不完全。有一个用户和系统文件夹,其默认位置根据Windows版本,系统文件夹名称而变化,实际上在旧版本的Windows中,用户和系统情况都是相同的。但是,这些默认值可以被覆盖(它们在我现在使用的系统上,它们与系统文件夹不在同一驱动器上)。
位置存储在系统变量中。一些框架(.NET,VB6,毫无疑问是其他框架)为您提供了查找路径的便捷方法,而不必查找系统变量(例如.NET中的System.IO.Path.GetTempPath)。
Windows不会为您清理临时文件夹(这就是为什么每隔几个月在您自己的计算机上将旧文件删除的原因),这取决于您玩得好。创建一个或多个文件不太可能踩到任何其他软件正在使用的名称(他们应该注意这样做,因此任何名称都应该这样做,但是假设系统中其他代码更糟糕,总是好的),以及完成后(或至少在应用程序退出时)删除文件。
在.NET System.IO.Path.GetTempFileName()中将在临时区域中创建一个新文件,并将其名称返回给您,合理保证不会与其他人发生冲突,因此请使用该文件或类似方法你可以。
答案 2 :(得分:1)
听起来你有两个需要共享临时文件的程序,一个肯定不希望路径名中有空格。可能最简单的事情是:
所以在命令提示符下你可以这样做:
希望有所帮助。
答案 3 :(得分:0)
要回答部分问题 - 如果您使用的是.NET,则可以使用Path.GetTempPath()
命名空间的System.IO
方法获取临时目录的位置。
// Get the path of the temporary directory
string tempDir = Path.GetTempPath();
// "Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file."
string tempFile = Path.GetTempFileName();
答案 4 :(得分:0)
在我的PC(XP SP3)上定义的%TEMP%
环境变量使用DOS样式的abcdef~1
目录名称 - 因此,如果你可以拉动该变量,你应该得到一条没有路径的路径空格。
e.g。 Start>Run>%TEMP%
将我带到C:\DOCUME~1\<user>\LOCALS~1\Temp
然而,如果一个“超级用户”摆弄该变量并将其指向其他地方,那么事情可能就会崩溃。你可以看一些like this来检索8-char-and-no-spaces路径。
答案 5 :(得分:0)
使用此代码
try { String s=File.createTempFile("temp-file", "tmp").getParent();
System.out.println(s);
} catch (IOException ex) {
Logger. getLogger(Result.class.getName()).log(Level.SEVERE, null, ex);
}
答案 6 :(得分:0)
您可以尝试这种方式
System.out.println(File.createTempFile("temp-file", "tmp").getParent());
String property = "java.io.tmpdir";
String tempDir = System.getProperty(property);
System.out.println("OS current temporary directory is " + tempDir);