2010-08-09 79 views
9

我正在编写一个需要通用临时文件夹的程序。我试图找到有关Windows Temp文件夹的详细信息。有两条路,我知道 -Windows临时目录详细信息(Java)

  1. 在每个用户目录下的应用程序数据\本地的\ Temp \ 这可能会改变取决于Windows版本?

  2. 在根据TEMP \系统文件夹(C:\ WINDOWS \ TEMP)

我想知道到底是什么Windows不会给每个这些。如果Windows从任一位置删除文件,它何时会这样做?我该如何/应该使用这些目录进行编程?

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

回答

3

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

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

Windows不会为您清理临时文件夹(这就是为什么它每隔几个月就会在自己的机器上爆破旧文件的原因),这取决于您玩的好。创建一个或多个文件不太可能使用任何其他软件正在使用的名称(他们应该小心地执行相同的操作,因此任何名称都应该这样做,但假设系统中的其他代码更糟)总是好的,并且完成后删除文件(或至少在应用程序退出时)。

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

+0

我很确定Windows在重新引导时清空C:\ Windows \ Temp \文件夹...或至少看起来这样。任何人都可以确认吗? – 2010-08-09 03:36:33

+0

@Tony R - 它取决于配置。我工作过的大多数网站在重新启动时不清除tmp(但有些网站)。 – 2010-08-09 07:42:48

+0

System.IO.Path.GetTempFileName()是Java中的File.createTempFile(...)。 – 2010-08-09 07:56:30

0

要回答你的问题的一部分 - 如果你使用.NET,你可以使用System.IO命名空间的Path.GetTempPath()方法来获取临时目录的位置。

// 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(); 
+0

由于= d。我正在使用Java,所以我可以通过System.getPropterty获得用户目录中的临时路径(...) – 2010-08-09 03:34:50

0

在我的PC(XP SP3)上定义的%TEMP%环境变量使用DOS风格的abcdef~1目录名称 - 因此,如果您可以取出该变量,则最终应该有一个无空格的路径。

例如Start>Run>%TEMP%带我到C:\DOCUME~1\<user>\LOCALS~1\Temp

但是,如果一个'超级用户'摆弄这个变量并指向它的其他地方,事情可能会崩溃。您可以查看like this以检索8个字符和无空格的路径。

1

这听起来像你有两个程序需要共享临时文件,而且一个绝对不需要路径名中的空格。大概最容易做的事情是:

  1. 设置TMP和TEMP变量公共目录
  2. 推出各自的应用程序(从这个修改后的环境) - 这应该拿起临时变量

因此,在命令提示符下,你可以这样做:

  1. 设置TMP = C:\ MYTEMP
  2. SET TEMP = C:\ MYTEMP
  3. 的java -cp X; Y; ​​Z my.application.Entry
  4. 运行其它应用(希望它也读出用于临时/ TMP环境)

希望有所帮助。

+0

你会改变一个系统的工作方式,只是为了让一个应用程序工作?如果有人“修复”临时文件夹位置会发生什么情况。 如果这些应用程序对临时文件夹有超出正常临时文件夹的特定需求,我会创建自己的临时文件夹并使用该文件夹而不是普通文件夹,或者使用路径的“MS-DOS兼容”版本,所以不会有空格。 – 2010-08-09 12:42:13

+0

无需在系统级别更改任何内容。该建议可以在批处理脚本或cmd shell中正常工作,并且只具有本地化的影响。 – 2010-08-09 13:43:16

8

这会给你在Java中的Windows临时目录的路径。

File.createTempFile("temp-file", "tmp").getParent() 
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); 
      }