RT_*_*RT_ 33 java temporary-files
我需要创建一个临时文件,所以我尝试了这个:
String[] TempFiles = {"c1234c10","c1234c11","c1234c12","c1234c13"};
for (int i = 0; i <= 3; i++) {
try {
String tempFile = TempFiles[i];
File temp = File.createTempFile(tempFile, ".xls");
System.out.println("Temp file : " + temp.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c108415816200650069233.xls
Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c113748833645638701089.xls
Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c126104766829220422260.xls
Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c137493179265536640669.xls
Run Code Online (Sandbox Code Playgroud)
现在,我不希望将额外的数字(long int)添加到文件名中.我怎样才能做到这一点?谢谢
Mar*_*nto 37
首先,使用以下代码段获取系统的临时目录:
String tDir = System.getProperty("java.io.tmpdir");
Run Code Online (Sandbox Code Playgroud)
然后将该tDir变量与tempFiles[]数组结合使用以单独创建每个文件.
jmq*_*jmq 17
如果您使用File.createTempFile生成临时文件名,则不能.我查看了java源代码来生成临时文件(对于java 1.7,你没有说明你的版本,所以我只使用了我的版本):
private static class TempDirectory {
private TempDirectory() { }
// temporary directory location
private static final File tmpdir = new File(fs.normalize(AccessController
.doPrivileged(new GetPropertyAction("java.io.tmpdir"))));
static File location() {
return tmpdir;
}
// file name generation
private static final SecureRandom random = new SecureRandom();
static File generateFile(String prefix, String suffix, File dir) {
long n = random.nextLong();
if (n == Long.MIN_VALUE) {
n = 0; // corner case
} else {
n = Math.abs(n);
}
return new File(dir, prefix + Long.toString(n) + suffix);
}
}
Run Code Online (Sandbox Code Playgroud)
这是生成临时文件名的java JDK中的代码.您可以看到它生成一个随机数并将其插入到前缀和后缀之间的文件名中.这是在"File.java"中(在java.io中).我没有看到任何改变它的方法.
Bra*_*son 11
使用番石榴:
import com.google.common.io.Files;
...
File myTempFile = new File(Files.createTempDir(), "MySpecificName.png");
Run Code Online (Sandbox Code Playgroud)
如果您希望在系统范围的临时目录中创建具有特定名称的文件,请展开%temp%环境变量并手动创建该文件,没有任何问题。
编辑:实际上,System.getProperty("java.io.tmpdir"));用于那个。
| 归档时间: |
|
| 查看次数: |
55052 次 |
| 最近记录: |