2014-03-13 1 views
0

이 같은 텍스트 파일이 있습니다Scannig는

AYN RAND | Anthem 
William C | The sound 
Arthur K | Donelaic year 

먼저이 책의 저자와 | 후 책을 간다. 별도의 문자열로 읽고 ArrayList에 저장하고 싶습니다.

public static void main(String[] args) { 

    String num; 
    String num2; 
    final List<Book> listofbooks = new ArrayList<>(); 

    try { 
     File file = new File("newfile.txt"); 
     Scanner input = new Scanner(file); 
     input.useDelimiter("|\n"); 
     while (input.hasNextLine()) { 
      num = input.next(); //reads only one char but I need whole string 
      num2 = input.next(); //reads only one char but I need whole string 
      Book k1 = new Book(num, num2); 

      listofbooks.add(k1); 
     } 
    } catch (FileNotFoundException e) { 
     System.err.format("File does not exist"); 
    } 
    for (Book book : listofbooks) { 
     System.out.println("Name: " + book.getName() + "Tile: " + book.getTitle()); 
    } 
} 

그리고 클래스의 책 : 여기에 지금까지 가지고 무엇을 그것은 단지 하나 개의 문자를 스캔

public class Book { 

     String name; 
     String bookTitle; 



     public Book(String name, String bookTitle) 
     { 
      this.name=name; 
      this.bookTitle=bookTitle; 
     } 
     public String getName() 
     {return this.name; 
     } 
     public String getTitle() 
     {return this.bookTitle; 


} 
} 

을하지만, | 또는 \n 여기 내가 얻을 출력의 조각이 될 때까지 나는 전체 문자열이 필요합니다 :

Name: ATile: Y 
Name: NTile: 
Name: RTile: A 
Name: NTile: D 
Name: Tile: | 
Name: Tile: A 
Name: nTile: t 

답변

0

이 다른 방식으로 수행 할 수 있습니다 : -

try { 
      File file = new File("newfile.txt"); 
      Scanner input = new Scanner(file); 

      while (input.hasNextLine()) { 
       String input1 = input.readLine();// read one line 
       String num[] = input1.split("\\|");// split line by "|" 
       Book k1 = new Book(num[0], num[1]); 

       listofbooks.add(k1); 
      } 
     } catch (FileNotFoundException e) { 
      System.err.format("File does not exist"); 
     } 
0

useDelimiter() 메소드는 패턴 표현식을 사용하고 | 패턴에 대한 특별한 논리 연산이므로, \, 두번째로 이스케이프해야합니다. \ 또는 \ n을 즐기십시오!

input.useDelimiter("\||\n");