try (BufferedReader b = new BufferedReader(new FileReader(args[0]))) {
System.out.println("Reading from file :" + args[0]);
String s = null;
while ((s = b.readLine()) != null) {
System.out.println(s);
}
} catch (ArrayIndexOutOfBoundsException a) {
System.out.println("No file specified, quitting !");
} catch (FileNotFoundException fe) {
System.out.println("File not found :" + args[0]);
} catch (IOException ie) {
System.out.println("Error reading file : " + ie.getMessage());
}
这里args [0]是:G:\ Lab Practice \ file.txt
输出: 找不到文件:G:\ Lab
这是因为路径中有空格。 我也尝试用args [0] + args [1]替换args [0],但是没有用。 谁能帮我解决这个问题?
答案 0 :(得分:2)
只需将参数放在引号中即可
java Class "G:\Lab Practice\file.txt"
在没有空格的情况下,它将args
数组中的每个参数都视为单独的参数-因此,在您的示例中,G:\Lab
是args[0]
,而Practice\file.txt
是args[1]
来自docs:
这是因为空格字符分隔了命令行参数。 要将Drink,Hot和Java解释为单个参数, 用户可以通过将其用引号引起来来加入它们。
答案 1 :(得分:2)
我假设您这样调用程序:
java -jar application.jar G:\Lab Practice\file.txt
这仅表示您有两个参数-G:\Lab
(在args[0]
中)和Practice\file.txt
(在args[1]
中)。现在两者都没有空格。
您需要在通话中添加一些引号:
java -jar application.jar "G:\Lab Practice\file.txt"
答案 2 :(得分:0)
将路径参数放在引号中-例如
java com.your.application.Main "G:\Lab Practice\file.txt"
答案 3 :(得分:0)
您是否尝试过使用引号?
like:args[0] is : "G:\Lab Practice\file.txt"