gpt4 book ai didi

java - 在命令提示符下运行时执行期间无法找到文件

转载 作者:行者123 更新时间:2023-12-02 03:24:57 25 4
gpt4 key购买 nike

祝这里的所有专家美好一天,

当我在命令提示符下运行以下命令时,出现 FileNotFoundException:

c:\TA\java -jar LoginCaptchaChrome.jar LoginCaptchaChrome https://2015.qa.int.www.mol.com/ C:\\TA\\TD\\Login\\Login.xlsx C:\\TA\\TR\\LoginCaptchaChrome_22082016_1838.xlsx

错误信息如下:

`Exception in thread "main" java.io.FileNotFoundException: C:\TA\TR\LoginCaptchaChrome_22082016_1838.xlsx" (The filename, directory name, or volume label syntax is incorrect)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at LoginCaptchaChrome.main(LoginCaptchaChrome.java:58)

我实际上是从命令提示符和文件传递参数

LoginCaptchaChrome_22082016_1838.xlsx` is not being passed to the code line :

FileOutputStream fos = new FileOutputStream("\"" + args[3] + "\"");

在以下代码中:

public class LoginCaptchaChrome {

public static void main(String[] args) throws IOException, InterruptedException{
String tc = args[0];
String address = args[1];
String test_data = args[2];
String test_result = args[3];`

System.setProperty("webdriver.chrome.driver", "C:\\Users\\Lam Chio Meng\\Desktop\\work\\chromedriver_win32\\chromedriver.exe");

FileOutputStream fos = new FileOutputStream("\"" + args[3] + "\"");
XSSFWorkbook workbook = new XSSFWorkbook();

希望在此得到专家的建议。预先感谢您。

最佳答案

问题源于对如何在命令行传递参数的误解。

以 shell 为例。假设在提示符下执行此命令:

someCommand "arg with spaces"

该过程的实际参数是什么:

  • someCommand
  • arg 带空格。是的,这是一个单一的论点。

这意味着您的问题是这一行:

new FileOutputStream("\"" + args[3] + "\"");

您根本不需要前导引号和尾随引号。

此外,由于现在是 2016 年,所以不要使用 FileOutputStream。使用 JSR 203:

final Path path = Paths.get(args[3]);
final OutputStream out = Files.newOutputStream(path);
<小时/>

查看 Java 程序如何实际查看参数的简单方法是使用如下程序:

public final class CmdLineArgs
{
public static void main(final String... args)
{
final int len = args.length;

System.out.println("---- Begin arguments ----");
IntStream.range(0, len)
.map(index -> String.format("Arg %d: %d", index + 1, args[index])
.forEach(System.out::println);
System.out.println("---- End arguments ----");

System.exit(0);
}
}

尝试在提示符下运行此命令,例如:

java MyClass foo bar

和:

java MyClass "foo bar"

看看差异。

关于java - 在命令提示符下运行时执行期间无法找到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39078925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com