Мне необходимо взять имя файла в качестве входного для сканера одним способом и использовать этот сканер как ссылку на путь к файлу для остальной части моего кода во всех других методах.
Яизучение файла ввода / вывода, и для этого проекта я должен взять имя файла в качестве ввода, посчитать количество строк в файле и поместить каждую строку в массив.
Моя проблема возникает во время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."