在Java中的FileReader中将带有空格的目录作为命令行参数传递

时间:2018-07-02 07:31:56

标签: java exception command-line directory filereader

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],但是没有用。 谁能帮我解决这个问题?

4 个答案:

答案 0 :(得分:2)

只需将参数放在引号中即可

java Class "G:\Lab Practice\file.txt"

在没有空格的情况下,它将args数组中的每个参数都视为单独的参数-因此,在您的示例中,G:\Labargs[0],而Practice\file.txtargs[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"