通常,当java返回“参数不正确”时,这意味着什么?

i7uaboj4  于 2022-12-02  发布在  Java
关注(0)|答案(6)|浏览(189)

我正在创建这样的文件

try {
    File file = new File(workingDir, obj.getName() + ".xls");
    outputStream = new FileOutputStream(file);
} catch (FileNotFoundException ex) {
    ex.printStackTrace();
}

而我

java.io.FileNotFoundException: ..\a\relative\path\obj_name.xls (The parameter is incorrect)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)

参数不正确是什么意思?我验证的路径名存在;它不应该只创建文件名吗?这是在windows机器上。代码在基于unix的系统上工作没有这个错误。

更新

已验证输出流试图写入的文件是否存在。还验证了该文件是否可写。经过一番折腾,我删除了实际路径,只传入了文件名(不需要),这样就可以了。所以问题与路径有关。我需要对路径中的字符进行转义吗?

nwnhqdif

nwnhqdif1#

这看起来像Windows计算机上的reported bug
在正常情况下,路径中包含冒号(:)而不是指驱动器号时,就会出现此消息。

6mzjoqzu

6mzjoqzu2#

您使用的路径可能有问题。请尝试使用file.getPath(),然后再开启它来两柴您的路径。

File file = new File(workingDir, obj.getName() + ".xls");
System.out.println("Path="+file.getPath());
outputStream = new FileOutputStream(file);
yc0p9oo0

yc0p9oo03#

如果你的“workingDir”是一个相对路径,那么当你把你的应用程序从unix移到windows时,你确定你在正确的“当前目录”上吗?也许,你应该检查一下正在运行的应用程序的当前目录是什么。

2admgd59

2admgd594#

也许应用程序没有写入文件的正确访问权限?它是只读的还是受保护的?
FileOutputStream.open()是一个本地方法,我会假设任何类型的异常消息(如“The parameter is correct”)都来自底层操作系统。

顺便说一句:File构造函数不调用FileOutputStream.open(),所以异常实际上不是来自您在这里发布的代码吗?

83qze16e

83qze16e5#

可能是因为路径中的反斜杠?路径太长?文件名对这个错误无效(特殊字符...)?
我可能是完全错误的,但值得一试,因为它听起来像一个操作系统相关的错误。

yb3bgrhw

yb3bgrhw6#

确保运行JVM进程的用户具有访问该文件的适当权限。

相关问题