Java中临时文件的名称会自动更改

时间:2016-02-26 16:21:19

标签: java file

这是我的代码

File outFile = null;
System.out.println("###DEB name = " + name);
System.out.println("###DEB extension = " + rozszezenie);
System.out.println("###DEB dir = " + dir);
if(name.length() < 3)
     name = FILE_NAME_PREFIX;
outFile = File.createTempFile(name+"_", "." + rozszezenie, dir);
System.out.println("###DEB outFile = " + outFile.getName());
运行后

给出输出:

###DEB name = BRAK;20160205;1016;501200911;tczelu
###DEB extension = ogg
###DEB dir = /tmp/tower_wind_tmp
###DEB outFile = BRAK;20160205;1016;501200911;tczelu_2859671049642865591.ogg

这些数字(2859671049642865591)来自哪里?

3 个答案:

答案 0 :(得分:2)

来自createTempFile的Javadoc(强调我的):

  

使用给定的前缀和后缀字符串在指定的目录中创建一个新的空文件,以生成其名称

这意味着此方法会生成一个名称,但您无法提供自己的名称。

如果您想使用自己的名称创建文件,那么您可能不想创建临时文件。相反,您应该只使用Files.createFile(path) Java NIO.2 API创建一个新文件,否则创建File#createNewFile()

答案 1 :(得分:0)

File.createTempFile(name+"_", "." + rozszezenie, dir);

使用随机名称创建新的临时文件。只需使用

new File(dir, name)

使用您提供的确切名称创建文件。

答案 2 :(得分:0)

我检查了public static File createTempFile(String prefix, String suffix, File directory),并使用static File generateFile(String prefix, String suffix, File dir)此方法内的<{p}

long n = random.nextLong();
if (n == Long.MIN_VALUE) {
    n = 0;      // corner case
} else {
    n = Math.abs(n);
} 

这个号码的来自