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

时间:2010-08-09 03:06:08

标签: java windows filesystems directory temp

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

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

  2. 在Temp \(C:\ Windows \ Temp)

  3. 下的系统文件夹中

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

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

    的原因

7 个答案:

答案 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)

听起来你有两个需要共享临时文件的程序,一个肯定不希望路径名中有空格。可能最简单的事情是:

  1. 将TMP和TEMP变量设置为公共目录
  2. 启动每个应用程序(来自此修改后的环境) - 应该选择临时变量
  3. 所以在命令提示符下你可以这样做:

    1. 设置TMP = c:\ mytemp
    2. 设置TEMP = c:\ mytemp
    3. java -cp x; y; z my.application.Entry
    4. 运行其他应用程序(希望它也读取temp / tmp的环境)
    5. 希望有所帮助。

答案 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);