为什么 Java File.createNewFile 要求前缀至少为三个字符长?

ser*_*oFC 5 java file

根据java.io.File.createTempFile,创建临时文件的前缀必须至少有 3 个字符长。为什么java API有这个限制?请参阅以下javadoc(重点是我的)

\n
\n

公共静态\ xc2 \ xa0File \ xc2 \ xa0 createTempFile(字符串\ xc2 \ xa0prefix,字符串\ xc2 \ xa0suffix)抛出IOException

\n

在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。调用该方法相当于调用createTempFile(prefix,\xc2\xa0suffix,\xc2\xa0null)。

\n

Files.createTempFile 方法提供了另一种在临时文件目录中创建空文件的方法。通过该方法创建的文件可能对该方法创建的文件具有更严格的访问权限,因此可能更适合安全敏感的应用程序。

\n

参数:

\n

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

\n

suffix - 用于生成文件名的后缀字符串;可能为空,在这种情况下将使用后缀“.tmp”

\n

返回: 表示新创建的空文件的抽象路径名

\n

抛出:IllegalArgumentException - 如果前缀参数包含的字符少于三个

\n

IOException - 如果无法创建文件

\n

SecurityException - 如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建文件

\n
\n

例如,此前缀无效,因为它只有两个字符

\n
// Throws IllegalArgumentException: Prefix string "te" too short: length must be at least 3\nFile tempFile = File.createTempFile("te", ".tmp");\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
// Creates temp file test14287484991844360415.tmp\nFile tempFile = File.createTempFile("test", ".tmp");\n
Run Code Online (Sandbox Code Playgroud)\n

新的 java API ( java.nio.file.Files.createTempFile ) 没有这个限制,并且前缀长度小于 3 个字符,那么旧的 java File API 要求前缀长度至少为 3 个字符的原因是什么?

\n

小智 -4

可能是旧硬件或 Java 运行的旧版本操作系统存在限制。您可以通过在前缀后面添加一个空格以使其更长来绕过该限制,如下所示:

File tempFile = File.createTempFile("te ", ".tmp");
Run Code Online (Sandbox Code Playgroud)

不过我之前没用过File.createTempFile(),只是创建永久文件,比如:

File file = new File("te.tmp");
file.createNewFile();
Run Code Online (Sandbox Code Playgroud)

而且我没有理由让文件少于 3 个字符,所以我不知道它是否适用于永久文件。让我知道这是否有帮助。