2013-07-16 2 views
-1

존재하는 .txt 파일에서 모든 문자열 "ID"를 찾고 얼마나 많은 문자열을 찾았습니까?.txt 파일에서 모든 문자열 "ID"를 찾으십시오.

내가 좋아하는이 .txt 파일이 : 나는 파일의 끝에 Product ID = "LASTEST_ID_PLUS_1, Product Name = "new"을 추가 할

Product ID = "001", Product Name = "P1" 

Product ID = "002", Product Name = "P2" 

Product ID = "003", Product Name = "P3" 

... 

을하지만, 마지막 ID 번호를 얻는 방법을 모르겠어요.

+10

로 시작 포함되어 있습니다. – Maroun

+1

지금까지 해보신 것은 무엇입니까? 순진한 방법은 파일을 한 줄씩 읽은 다음 ** 제품 ID = "**"로 파싱하고 EOF에 도달 할 때까지 마지막으로 본 ID 만 저장합니다. – MrSmith42

답변

2
String filename = "test.txt"; 
int numOfIds = 0; 
try (BufferedReader br = new BufferedReader(new FileReader(filename))) { 
    String line = null; 
    while ((line = br.readLine()) != null) { 
     if (line.contains("Product ID = ")) { 
      numOfIds++; 
     } 
    } 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

좋은 출발점이되어야합니다. 마지막으로 읽은 ID를 저장 한 다음 추가하여 사용하십시오.

편집 : 질문을 다시 한 번 읽은 후에 .txt 파일에 Product ID =이있는 이유를 모르겠습니다. txt 파일을 훨씬 쉽게 처리를 위해 다음과 같이하십시오 :

001,P1 
002,P2 
003,P3 

당신은 전체 파일을 보이지 않았다 저장 제품 ID와 다른 것들이 아니라면.

+0

내 문제가 해결되었습니다. 매우 감사합니다. – Mee

+0

이 솔루션은 제품 ID가 순차적으로 그리고 갭없이 연속적으로 저장된다고 가정하고, 이것이 실제 데이터의 경우라면 마지막 행을 읽고, ID를 구문 분석하고, int로 변환하고, 증가시키는 것도 작동합니다. – cfeduke

1
InputStreamReader converter = new InputStreamReader(System.in); 
BufferedReader in = new BufferedReader(converter); 
while(CurLine = in.readLine()) 

//after exiting the loop 

"indexOf"및 "subString"StringBuilder 메서드를 사용할 수 있습니다. 마지막 ID를 잡을 수 있습니다. 나는 각 줄을 가정 한

1
LineNumberReader lnr = null; 
try { 
    File file = new File("productList.txt"); 
    lnr = new LineNumberReader(new FileReader(file)); 
    lnr.skip(Long.MAX_VALUE); 
    int lineNumber = lnr.getLineNumber(); 
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true))); 
    String productName = getProductName(); // may be a user input 
    out.println("Product ID = \""+lineNumber+"\", Product Name = \""+productName+"\"\n"); 
    out.close(); 
} catch (Exception ex) { 
    // handle it 
} finally { 
    try { 
     lnr.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(H.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

은 제품과 일련 번호가 코드 또는이 작업을 수행하는 방법에 대한 의견을 공유하십시오 1.