Невозможно конвертировать сканер в файл, сканер в конце файла, исключение fileNotFoundException - PullRequest
0 голосов
/ 08 февраля 2019

Мне необходимо взять имя файла в качестве входного для сканера одним способом и использовать этот сканер как ссылку на путь к файлу для остальной части моего кода во всех других методах.

Яизучение файла ввода / вывода, и для этого проекта я должен взять имя файла в качестве ввода, посчитать количество строк в файле и поместить каждую строку в массив.

Моя проблема возникает во времяFileUtils.countRecords метод.После возвращения типа файла в FileUtils.openInputFile, а затем взятия этих данных и помещения их в сканер (переменные inf и fin в коде) я должен взять этот сканер и использовать его, чтобы снова указать на файл.(File input=new File(scanner)) * Мой инструктор намекнул нам, что «Сканер находится в 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

Когда я пытаюсь 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."

1 Ответ

0 голосов
/ 09 февраля 2019

Так что, я думаю, scanner fin не содержит путь / имя файла.Это ссылка на сам открытый файл, поэтому все, что мне нужно было сделать, это подсчитать каждую строку в файле следующим образом:

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