2015-05-14 2 views
1

Я хочу, чтобы результаты из 'name' и 'code' были вставлены в файл log.txt, но если я запустил эту программу, в файл .txt будут вставлены только результаты имени, I не может видеть результаты кода, добавляемые под именем. Если я делаю System.outprintln (name) & System.outprintln (code) Я получаю результаты, напечатанные в консоли, но не вставляемые в файл. Может кто-то сказать мне, что я делаю неправильно?Как добавить несколько текстовых файлов в текстовый файл

  Scanner sc = new Scanner(file, "UTF-8"); 
      BufferedReader br = new BufferedReader(new FileReader(file)); 
      PrintWriter out = new PrintWriter(new FileWriter("log.txt", true)); 

      while ((line = br.readLine()) != null) { 
      if (line.contains("text1")) { 
       String[] splits = line.split("="); 
       String name = splits[2]; 
       for (int i = 0; i < name.length(); i++) { 
        out.println(name); 

       } 
      } 

      if (line.contains("text2")) { 
       String[] splits = line.split("="); 
       String code = splits[2]; 
       for (int i = 0; i < code.length(); i++) { 
        out.println(code); 

       } 
      } 
     out.close()    
      } 

файла выглядит следующим образом:

Name=111111111 
Code=333,5555 
Category-Warranty 

Name=2222222 
Code=111,22 
Category-Warranty 
+0

Что такое 'br'? Какие строки он содержит? Он содержит какие-либо строки со строкой «text2» в нем? Кроме того, вы никогда не назначаете переменные 'name' и' code'. Являются ли эти два значения частью 'строки ', которую вы читаете с' br'? – Timo

+0

Я предполагаю, что строки, которые вы читаете из 'file', являются' name = code', где 'name' и' code' - это значения, которые вы хотите записать в 'log.txt', правильно? – Timo

+0

Посмотрите на мой ответ ниже! – Timo

ответ

0

Посмотрите на этот код. Это работает для вас?

final String NAME = "name"; 
final String CODE = "code"; 

BufferedReader br = new BufferedReader(new FileReader(file)); 
PrintWriter out = new PrintWriter(new FileWriter("log.txt", true)); 

while ((line = br.readLine()) != null) { 
    String[] splits = line.split("="); 
    String key = splits[0]; 
    String value = splits[1]; 

    if (key.equals(NAME) || key.equals(CODE)) { 
     out.println(value); 
    } 
} 

out.close(); 

У вас есть несколько проблем в коде:

  • вы никогда не назначать переменные name и code.
  • вы close() ваш PrintWriter внутри while -loop, это означает, что у вас возникнет проблема, если вы прочтете более одной строки.
+0

Я получаю сообщение об ошибке «Исключение в потоке» main «java.lang.ArrayIndexOutOfBoundsException:« Я думаю, что из-за того, что split [0] и [1] он должен быть 1 для обоих, я тоже пробовал эту ошибку, но такую ​​же ошибку – user3860731

+0

Как строки вы читаете? Всегда ли они содержат '=' и всегда ли текст слева и справа? Могли бы вы сделать нам одолжение и опубликовать пример того, как будет выглядеть такая строка? – Timo

+0

Мне нравится ваш ответ лучше +1 – Petro

-1

Убедитесь, что второе, если условие выполняется, т.е. линии строка содержит "text2".

+0

, когда я делаю System.out.println() для text1 и text2, я получаю текст, напечатанный в консоли, но ничего не вставляется в файл, поэтому в каждом цикле if возникает вызывающий вызов. – user3860731

0

Я не понимаю, почему это не будет работать, не видя больше того, что вы делаете:

BufferedReader br = new BufferedReader(new FileReader(file)); 
PrintWriter out = new PrintWriter(new FileWriter("log.txt", true)); 

while ((line = br.readLine()) != null) { 
    if (line.contains("=")) { 
     if (line.contains("text1")) { 
      String[] splits = line.split("="); 
      if (splits.length >= 2) { 
       out.println(splits[1]); 
      } 
     } 
     if (line.contains("text2")) { 
      String[] splits = line.split("="); 
      if (splits.length >= 2) { 
       out.println(splits[1]); 
      } 
     } 
    } 
} 
out.flush(); 
out.close(); 
Смежные вопросы