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

Java中临时文件的名称会自动更改,java,file,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.createT

这是我的密码

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());
这些数字(28596710496642865591)来自哪里

File.createTempFile(name+"_", "." + rozszezenie, dir);
使用随机名称创建新的临时文件。只用

new File(dir, name)
使用您提供的确切名称创建文件

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

new File(dir, name)
使用您提供的确切名称创建文件。

来自(emphasis mine)的Javadoc:

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

这意味着此方法将生成一个名称,而您不能提供自己的名称

如果您想用自己的名字创建一个文件,那么您可能不想创建一个临时文件。相反,您应该使用from或其他方式创建一个新文件。

来自(emphasis mine)的Javadoc:

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

这意味着此方法将生成一个名称,而您不能提供自己的名称


如果您想用自己的名字创建一个文件,那么您可能不想创建一个临时文件。相反,您应该使用from或其他方式创建一个新文件。

我选中了
公共静态文件createTempFile(字符串前缀、字符串后缀、文件目录)
,它使用
静态文件生成器文件(字符串前缀、字符串后缀、文件目录)
,其中包含此方法

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

这个数字来自

我检查了
公共静态文件createTempFile(字符串前缀,字符串后缀,文件目录)
,它使用
静态文件生成器文件(字符串前缀,字符串后缀,文件目录)
这个方法的内部是

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

这个数字来自新文件(…)

没有在磁盘上创建文件。那么呢?如果你愿意,你可以给它写信。所以问题是关于创建一个文件。但这个答案不行。它分配一个新的
文件
对象,这是不同的。是的,我知道你在说什么,但问题的代码是为什么文件的getName()不是作为参数传递的。新文件(…)
不会在磁盘上创建文件。那么?如果你愿意,你可以给它写信。所以问题是关于创建一个文件。但这个答案不行。它分配一个新的
文件
对象,这是不同的。是的,我知道你在说什么,但问题的代码仍然是问为什么文件的getName()不是作为参数传递的。