无法将扫描仪转换为文件,文件末尾的扫描仪,fileNotFoundException

Unable to Convert Scanner to File, Scanner at end of file, fileNotFoundException

提问人:Travis O'Kelly 提问时间:2/9/2019 最后编辑:vs97Travis O'Kelly 更新时间:2/9/2019 访问量:61

问:

我需要在一个方法中将文件名作为扫描程序的输入,并在所有其他方法中使用该扫描程序作为其余代码的文件路径的引用。

我正在学习文件 I/O,对于这个项目,我应该将文件名作为输入,计算文件中的行数并将每行放入一个数组中。

我的问题出现在方法中。在返回一个文件类型,然后获取该数据并将其放入扫描程序(代码中的变量 inf 和 fin)之后,我应该拿起该扫描程序并使用它再次指向文件。 *我的导师给了我们一个提示,“扫描仪在EOF上,需要重置”,尽管我无法在这里找到任何可以帮助我的“文件末尾”文档。FileUtils.countRecordsFileUtils.openInputFile(File input=new File(scanner))

From main 方法 (!这不能更改!

File inf = null;
int total, choice;
String [] words = null;
Scanner kb = new Scanner(System.in), fin = null;
inf = FileUtils.openInputFile(kb);
fin = new Scanner(inf);
total = FileUtils.countRecords(fin, 1);
fin.close();

FileUtils.openInputFile(kb) 在给定文件路径后返回类型 File。

public static int countRecords(java.util.Scanner fin,int linesPer)
{   
    File input = new File(fin.toString()); //fileNotFoundException here
    File input = new File(fin); //also throws filenotfoundexception

当我尝试或得到这个时:System.out.print(fin)System.out.print(fin.toString())

java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q?\E][infinity string=\Q?\E]

这显然不是文件名或路径。我想知道在将我的文件变量分配给它之前,我是否需要将我的扫描仪转换为其他东西。或者,如果有类似 .toString() 的东西可以将上述扫描仪属性转换为可读文本。或者如何“在eof重置扫描仪”。

java 文件 io java.util.scanner eof

评论


答:

0赞 Travis O'Kelly 2/9/2019 #1

所以我想它不包含路径/文件名。它是对打开文件本身的引用,因此我需要做的就是计算文件中的每一行,如下所示:scanner fin

while(fin.hasNext())
        {
            fin.nextLine();
            count ++;
        }