如何使用Scanner读取文件并将其传递给Java中的方法

时间:2014-09-23 09:36:46

标签: java file parameters io java.util.scanner

我对如何使用Scanner读取文件(在命令行参数中给出)感到困惑,并在方法中使用该文件中的信息。最好的方法是什么?

我知道我的代码中一定有很多错误。即我应该将哪种类型的参数传递给方法,字符串或文件?我在代码中评论了我的问题。非常感谢!

public class Read {
int [] store;

public Read() {
    store = new int[200];
}
public static void main(String[] args) throws FileNotFoundException {
    File inputFile = new File (args[0]); //shall I declare a File variable here?
    Read readFile = new Read(); 
    readFile.doSomething(inputFile);//Should the parameter of doSomething be String type? 
}
public void doSomething (String inputFile) throws FileNotFoundException{
    Scanner sc;  //I intend to use the info. from the file to do something here
    sc = new Scanner(new FileReader(inputFile));
    while (sc.hasNext()){
        .....
    }
 }
}

3 个答案:

答案 0 :(得分:1)

我建议你传递String意味着文件路径在这个意义上读取文件之后Objects在方法执行后获取垃圾,而在main方法中你可能想要执行在执行main方法之前,其他一些东西和File对象仍然可以访问。

如果 想要读取多个文件并且您要传递多个命令行参数,该怎么办?因此将String传递给方法听起来很方便,因为它允许您管理File对象。在这种情况下,创建File对象而不是将其传递给方法会变得更加耗时。

所以它应该......

        public static void main(String[] args){
            Read readFile = new Read(); 
            readFile.doSomething(args[0]);
            readFile.doSomething(args[1]);//You can read multiple files
            ....
        }
        public void doSomething (String inputFile) throws FileNotFoundException{
            File inputFile = new File (inputFile);
            //Read File With Scanner
        }

答案 1 :(得分:0)

可以这样做,但是在启动程序时你必须将文件名传递给命令行。像这样:

java [program] [filename]

另一种解决方案是硬编码:

文件inputFile =新文件("文件名");

答案 2 :(得分:0)

如上所述,这些是两种方式,但不是您的硬编码文件必须存在于您的软件包所在的项目中。