2015-05-14 5 views
1

Я пытаюсь распечатать разделы текстового файла. Сейчас текстовый файл состоит изJava: чтение части текстового файла

Jack <ID 123.456> 
Doug <ID 231.345> 

Это то, что я до сих пор с точки зрения кода:

BufferedReader reader = new BufferedReader(new FileReader("File.txt")); 
    String readBuff = reader.readLine(); 
    String tempString = ""; 

    while (readBuff != null) { 
     if (tempString.equals("<ID ") && !readBuff.equals(">")) 
     { 
      tempString = readBuff; 
      System.out.println(tempString); 
     } 
     readBuff = reader.readLine(); 
    } 
    reader.close(); 

Я надеялся на это, чтобы распечатать секции ID (т.е. «123.456» и «231.345») каждой строки, но прямо сейчас ничего не печатает. Любая помощь будет оценена.

ответ

1

Попробуйте этот код:

FileInputStream fis = new FileInputStream(new File("File.txt")); 
BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 

String line = null; 
while ((line = br.readLine()) != null) { 
    String[] parts = line.split(" "); 
    String theId = parts[2].substring(0, parts[2].length()-1); 
    System.out.println(theId); 
} 

br.close(); 
+0

Это сработало отлично. Спасибо. Время, чтобы посмотреть, что подстрока: P – WonderfulWonder

0

Изначально tempString будет пустым, поэтому он никогда не будет равен <ID, поэтому ваше назначение tempString никогда не произойдет. Таким образом, я думаю, что эта строка: if (tempString.equals("<ID ") && !readBuff.equals(">")) должна быть изменена на if (readBuff.contains("<ID ") && !readBuff.endsWith(">")). Это должно печатать как минимум всю строку.

Чтобы получить его, чтобы напечатать раздел ID, вы можете просто первый split на <, это даст массив из 2 сегментов: Jack и ID 123.456>. После этого вы можете просто удалить последний символ из второго элемента массива и распечатать его. Это должно распечатать идентификатор, который вы используете.

0

Ну, ваше if условия ложного каждый раз,

, когда вы сравниваете свои струны <ID с tempString в тот момент tempString не содержит ничего. оно равно null/пустое. второе условие, которое вы проверяете readBuff с «>», а readBuff содержит строку из txt-файла Jack <ID 123.456>. Вам необходимо изменить логику,

if(!readBuff.equals("")){ 
    System.out.println(readBuff); 
} 
+0

Ahh, что имеет смысл. Мне было интересно, почему он никогда не входил в утверждение if. – WonderfulWonder

Смежные вопросы