Парсинг txt файла через tokenizer

109
27 августа 2019, 15:50

Есть список

1 Pinchuk Evhen.O 01-02-1992 02-01-2019
2 Ainchuk Evhen.O 02-02-1992 03-01-2019
3 Binchuk Evhen.O 03-02-1992 04-01-2019
4 Cinchuk Evhen.O 04-02-1992 05-01-2019
5 Dinchuk Evhen.O 05-02-1992 06-01-2019

Я его пытаюсь разбить токанайзером но получаю вместо одного значения - целый столбик.

FileInputStream fstream = new FileInputStream(file);
        String line;
        String delimiter = " ";
        int linecounter=0;
      StringTokenizer tokenizer;
      BufferedReader input = null;
      try{
        input = new BufferedReader(new InputStreamReader(fstream));
        while ((line = input.readLine()) !=null){
          linecounter++;
          tokenizer = new StringTokenizer(line,delimiter);
          while (tokenizer.hasMoreElements()){
            String id = tokenizer.nextToken();
            String name = tokenizer.nextToken();
            String surname = tokenizer.nextToken();
            String dateBirthday = tokenizer.nextToken();
            String dateStartWorking = tokenizer.nextToken();
            System.out.println(id+name);

Делаю проверку на вывод в конце получаю столбец А мне нужно внести данные в моей метод

List<Worker> workers = new ArrayList<>();
            workers.add(new Worker(id,name,surname,dateBirthday,dateStartWorking));
            String fileName = "list.xml";
            writeToXML(workers,fileName);

в итоге вносит только последнюю строку

<?xml version="1.0" encoding="UTF-8"?>
<Person xmlns="person">
  <Person id="5">
    <name xmlns="">Dinchuk</name>
    <surname xmlns="">Evhen.O</surname>
    <DateBirthday xmlns="">05-02-1992</DateBirthday>
    <DateStartWorking xmlns="">06-01-2019</DateStartWorking>
  </Person>
</Person>

Если вносить данные в ручную, то метод работает правильно и все вносит!

workers.add(new Worker("1","Papa","Papa","02-01-01192","02-01-1992"));

Помогите! Где я налажал ? Уже все перепробовал!

Answer 1

Полный код

public class Main {
    public static void main(String[] args) throws TransformerException, IOException {
        StringBuilder string = new StringBuilder();
        String file = "text.txt";
        FileInputStream fstream = new FileInputStream(file);
        String line;
        String delimiter = " ";

      StringTokenizer tokenizer;
      BufferedReader input = null;
      List<Worker> workers = new ArrayList<>();
      String fileName = "list.xml";
      try{
        input = new BufferedReader(new InputStreamReader(fstream));
        while ((line = input.readLine()) !=null){
          tokenizer = new StringTokenizer(line,delimiter);
          while (tokenizer.hasMoreElements()){
            String id = tokenizer.nextToken();
            String name = tokenizer.nextToken();
            String surname = tokenizer.nextToken();
            String dateBirthday = tokenizer.nextToken();
            String dateStartWorking = tokenizer.nextToken();
            System.out.println(id);
            //Добавлю элементы в список
            workers.add(new Worker(id,name,surname,dateBirthday,dateStartWorking));

          }
           writeToXML(workers,fileName);
        }
      }catch (FileNotFoundException e) {
        System.out.println("Unable to open file " + fstream);
      } catch (IOException e) {
        System.out.println("Unable to read from file " + fstream);
      }finally {
        try {
          if (input != null)
            input.close();
        } catch (IOException e) {
          System.out.println("Unable to close file " + fstream);
        }
    }
   }
   private static void writeToXML(List<Worker> workers, String fileName) throws IOException{
     Document doc = new Document();
     doc.setRootElement( new Element("Person", Namespace.getNamespace("person")));
     for (Worker worker : workers){
       Element workerElement = new Element("Person", Namespace.getNamespace("person"));
       workerElement.setAttribute("id", String.valueOf(worker.getId()));
       workerElement.addContent(new Element("name").setText(worker.getName()));
       workerElement.addContent(new Element("surname").setText(worker.getSurname()));
       workerElement.addContent(new Element("DateBirthday").setText(worker.getDateBirthday()));
       workerElement.addContent(new Element("DateStartWorking").setText(worker.getDateStartWorking()));
       doc.getRootElement().addContent(workerElement);
     }
     XMLOutputter xmlWriter = new XMLOutputter(Format.getPrettyFormat());
     xmlWriter.output(doc, new FileOutputStream(fileName));
   }
}
READ ALSO
Общее кратное число, оптимизация

Общее кратное число, оптимизация

Есть программа, которая работает, но числа long очень долго думает, а иногда и не все выписываетУсловия : программа должна работать пока не вводится...

131
Как подставить имя метода программно?

Как подставить имя метода программно?

Смысл в том, что в зависимости от получаемых методом GET параметрах сервлетом необходимо выполнить тот или иной метод - getN1FromDB, getN2FromDB и тд

103
Start/Stop SVG анимация

Start/Stop SVG анимация

Я хотел бы использовать эту красивую SVG-анимацию, размещенную на CodePen, но я не могу понять, как запустить или перезапустить анимацию:

119
Загрузка истории Commet Server

Загрузка истории Commet Server

Где-то со вчерашнего дня в чате на моем сайте, работающем при помощи Commet Server не работает функция

115