为什么Java文件.createNewFile要求前缀至少为三个字符长?[已关闭]

dfty9e19  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(354)

**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。

这个问题似乎与help center中定义的范围内的编程无关。
8小时前关门了。
Improve this question
根据java.io.File.createTempFile,创建临时文件的前缀必须至少为3个字符长,为什么java API有这个限制?参见下面的javadoc(强调我的)
公共静态文件createTempFile(字符串前缀,字符串后缀)引发IOException
在默认的临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。调用此方法等效于调用createTempFile(prefix,suffix,null)。
Files.createTempFile方法提供了在临时文件目录中创建空文件的另一种方法。用那个方法创建的文件对用这个方法创建的文件可能有更严格的访问权限,因此可能更适合安全敏感的应用程序。
参数:

prefix -用于生成文件名的前缀字符串;长度必须至少为三个字符

suffix -用于生成文件名的后缀字符串;可以为空,在这种情况下将使用后缀“.tmp
返回:表示新创建的空文件的抽象路径名
抛出:IllegalArgumentException -如果前缀参数包含的字符少于三个
IOException -如果无法创建文件
SecurityException -如果安全管理器存在并且其SecurityManager.checkWrite(java.lang.String)方法不允许创建文件
例如,此前缀无效,因为它只有两个字符

// Throws IllegalArgumentException: Prefix string "te" too short: length must be at least 3
File tempFile = File.createTempFile("te", ".tmp");

此前缀有效,因为它有4个字符:

// Creates temp file test14287484991844360415.tmp
File tempFile = File.createTempFile("test", ".tmp");

新的java API(java.nio.file.Files.createTempFile)没有这个限制,并且可以使用少于3个字符的前缀,那么旧的java文件API要求前缀至少为3个字符的原因是什么呢?

ia2d9nvy

ia2d9nvy1#

这可能是旧硬件或旧版本的Java操作系统的限制。您可以在前缀后加一个空格,使其更长,这样就可以绕过这个限制:

File tempFile = File.createTempFile("te ", ".tmp");

但是,我以前没有使用过File.createTempFile(),只创建永久文件,例如:

File file = new File("te.tmp");
file.createNewFile();

而且我没有理由让一个文件短于3个字符,所以我不知道它是否会与一个永久文件。让我知道如果这有帮助。

相关问题