读取参数文件进行处理

时间:2015-11-22 02:21:29

标签: java command-line-arguments fileinputstream

我在从命令行读取文件时遇到了一些麻烦。 我之前从未使用过命令行参数,所以我猜我有点失落。 这是我到目前为止所做的:

FileInputStream fin1 = null;
for (int i = 0; i < args.length; i++) //command line argument for file input
{
    fin1 = new FileInputStream(args[i]);
}
//Scanner scan = new Scanner(fiin1);

我已经注释掉了我的扫描仪,因为我使用了一种不同的方法(我将其作为参数传入fin1),并且该方法中有一个扫描仪。但是,我不太确定我是否仍然需要那里的扫描仪(可能作为参数传递给另一种方法)。

无论如何,如果我运行我的代码,我会得到一个NullPointerException,我认为这是因为我将FileInputStream初始化为null。但是如果我在for循环中改变它,那为什么重要呢? 此外,我需要保持我的主要方法,所以我可以在其中做更多。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

请注意,它被称为 File InputStream,因此我们需要使用File。

您只需使用扫描仪,并将其设置为System.in

            Scanner scanner = new Scanner(System.in);

之后,您可以初始化FileInputStream

How to Read Strings from Scanner in console Application JAVA?

答案 1 :(得分:0)

使用以下代码。

    if (args.length < 1) {
        System.out.println("No file was given as an argument..!");
        System.exit(1);
    }
    String fileName = args[0];
    Scanner scanner = new Scanner(new File(fileName));

如果您想使用FileInputStream,请更改最后一行以创建FileInputStream个实例。

   fin1 = new FileInputStream(fileName);

如果您只提供一个文件名作为参数,则无需使用for-loop。您可以按照以下方式运行代码。

javac MyClass.java       //Compile your code(Assumed that your file is MyClass.java
java MyClass filename    //Change filename with the path to your file

您可能因为在运行NullPointerException代码时没有使用filename作为参数而获得java

答案 2 :(得分:0)

首先:当你运行你的代码时,你只会到达最后一个参数。 你应该这样做:

 FileInputStream fileInputStream = null;
    for (String argument : args) {
        fileInputStream = new FileInputStream(argument);
        //you should process your argument in block together with creating fis
        Scanner scanner = new Scanner(fileInputStream);
        //now, when a scanner copy is created, you can use it (or you can use your own
        while (scanner.hasNext()) {
            System.out.println(scanner.nextLine());
        }
    }