2016-10-09 2 views
0

привет у меня есть некоторые проблемы с пониманием моего лекционного материала и подумал, может быть кто-то здесь может помочь мне понять это немного лучшепонимания файл ввод-вывод

это пример я имею в лекции

private void readFileExample (String inFilename){ 
    FileInputStream fileStrm = null; 
    InputStreamReader rdr; 
    BufferedReader bufRdr; 
    int lineNum; 
    String line; 
    try { 
     fileStrm = new FileInputStream(inFilename); 
     rdr = new InputStreamReader(fileStrm); 
     bufRdr = new BufferedReader(rdr); 

     lineNum = 0; 
     line = bufRdr.readLine(); 
     while (line != null) { 
      lineNum++; 
      processLine(line); 
      line = bufRdr.readLine(); 
     } 
     fileStrm.close(); 
    } 
    catch (IOException e) { 
     if (fileStrm != null) { 
      try { fileStrm.close(); } catch (IOException ex2) { } 
     } 
     System.out.println("Error in file processing: " + e.getMessage()); 
    } 
} 

также я есть слайд на разборе файлов CSV

private void processLine(String csvRow) { 
    String thisToken = null; 
    StringTokenizer strTok; 
    strTok = new StringTokenizer(csvRow, ","); 

    while (strTok.hasMoreTokens()) { 

     thisToken = strTok.nextToken(); 
     System.out.print(thisToken + " "); 

    } 
    System.out.println(""); 
} 

я думаю, метод ProcessLine используется в readFileExample отделить файл CSV в том, что правильно?

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

Scanner sc = new scanner (system.in) 
filename = sc.nextline() 

и если его не слишком простой пример был бы отличным

спасибо за помощь.

+0

Из [документации для 'StringTokenizer'] (https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html) -« _StringTokenizer »- это унаследованный класс, который сохраняется по соображениям совместимости, хотя его использование не рекомендуется в новом коде_ ». Если ** сами Oracle ** говорят вам не использовать его; нет. –

ответ

0

Неважно, как вы вводите имя файла.

Он может выглядеть следующим образом: String fileName = new String ("myFileName");

или как у вас есть:

Сканер СБН = новый сканер (System.in);

filename = sc.nextline();

Затем после установки файла, передать его readFileExample:

readFileExample (имя файла); // Все, что вы получите имя из, передать его.

И функция processLine, точно так же как это имя, которое предназначено для разбора каждой строки. Если вы хотите использовать эту программу для реализации своего рода анализа файлов. Просто используйте свою структуру выше. но вам нужно изменить функцию processLine.

+0

для самого файла мне нужно указать расположение файла или я могу просто поместить его в тот же каталог, что и файл java? @Evingle –

+0

FileInputStream (String name) Создает FileInputStream, открыв соединение с фактическим файлом, именем которого называется имя пути в файловой системе. https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html. Эти два способа, о которых вы говорили выше, должны работать. – Evingle