这是我的代码
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)来自哪里?
答案 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);
}
这个号码的来自