当前位置: 首页 > 知识库问答 >
问题:

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

龙隐水
2023-03-14

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

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

我的问题出现在FileUtils期间。countRecords方法。在FileUtils中返回文件类型后。打开输入文件(openInputFile),然后将数据放入扫描仪(代码中的变量inf和fin),我应该使用该扫描仪再次指向文件<代码>(文件输入=新文件(扫描仪))*我的导师给了我们一个提示,“扫描仪处于EOF,需要重置”,尽管我还没有找到任何“文件结束”文档可以在这里帮助我。

从主方法(!这不能改变!)

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)在给定文件路径后返回类型文件。

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

当我尝试系统时。出来打印(fin)或系统。出来打印(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重置扫描仪”

共有1个答案

燕英逸
2023-03-14

所以我猜扫描仪尾部没有保存路径/文件名。它是对打开文件本身的引用,因此我需要做的就是像这样计算文件中的每一行:

while(fin.hasNext())
        {
            fin.nextLine();
            count ++;
        }
 类似资料:
  • 我应该在属性文件中添加什么以便它包括。模块文件?

  • 问题内容: 我正在玩Scanner类,以进行学习,并且我使用它来读取非常大的文件(大约60.000行,大约不使用Reader类),并且在大约400行后停止读取。我是否必须在Scanner的构造函数中使用Bufferedreader还是问题?我想知道为什么会这样。谢谢。我的代码是输出所有行的常用代码。 问题答案: 此问题通常在64位计算机上或文件大小大于1-2 GB的文件中更常见,并且与堆空间无关。

  • 问题内容: 我的Java作业有问题。我遇到了意外的异常,特别是: java.util.NoSuchElementException:找不到行 我正在使用,该程序不断读取任何内容,并重复“无效格式”异常文本。如果输入正确的值,则第一部分通过,然后该部分立即进入此异常。如果输入的值不正确,则它将开始循环异常。 这是我的代码: 问题答案: 您关闭了多个库,这些库关闭了底层库,因此另一个库将不再从同一库和

  • 问题内容: 使用Scanner类中的useDelimiter时遇到一些问题。 如果我有这个输入 美国广播公司 输出将是 AB 然后等到我键入另一个“-”以打印出最后一个字符 但是,如果我没有用户输入数据,而是将字符串插入到Scanner中,则代码将起作用。原因是什么?如何解决?我不想使用StringTokenzier 问题答案: 如果没有等待您输入另一个,则将错误地假定您已完成输入。 我的意思是,

  • 我做了一个程序,要求3个整数来输出三角形的类型。所有内容都成功运行和编译,但是,在要求用户查看是否要再次循环的部分,联机编译器会输出错误: 异常线程"main"java.util.NoSuchElement异常在java.util.Scanner.throwFor(Scanner.java:838)在java.util.Scanner.next(Scanner.java:1347)在Assignm

  • 这就是我想测试的方法 我的测试: 但是我在