我对如何使用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()){
.....
}
}
}
答案 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)
如上所述,这些是两种方式,但不是您的硬编码文件必须存在于您的软件包所在的项目中。