2017-01-10 1 views
0

에서 이름을 검색하기 :어떻게이처럼 보이는 파일이 파일을 추출 값

Dwarf remains:0 
Toolkit:1 
Cannonball:2 
Nulodion's notes:3 
Ammo mould:4 
Instruction manual:5 
Cannon base:6 
Cannon base noted:7 
Cannon stand:8 
Cannon stand noted:9 
Cannon barrels:10 
... 

필드의 값을,이 파일을 열 이름을 검색하고 반환하는 가장 쉬운 방법은 무엇입니까? 외부 라이브러리를 사용할 수 없습니다.

내가 시도한 /이 확인입니까?

public String item(String name) throws IOException{ 
    String line; 
    FileReader in = new FileReader("C:/test.txt"); 
    BufferedReader br = new BufferedReader(in); 


    while ((line = br.readLine()) != null) { 
     if(line.contains(name)){ 
      String[] parts = line.split(":"); 
      return parts[1]; 
     } 
    } 

    return null; 



} 
+0

지금까지 어떤 시도를하셨습니까? 어떤 노력? –

+0

파일을 열고 한 줄씩 읽은 다음 정규식을 사용하여 이름을 확인하고 해당 줄을 찾으면 파일을 닫고 (필요한 경우) 값을 반환합니다. 살펴볼 클래스 :'File','FileReader','BufferedReader' (쉬운 줄 읽기),'String' (아니면'Pattern'과'Matcher') 등등. – Thomas

+0

은 단순히 내용을 읽고 당신을 발견합니다. 원한다면 ... 시도했거나 오류가있는 코드를 게시하면 좋을 것입니다. – Mohit

답변

0

코드에 대한 후속 조치로서 - 컴파일되고 정상적으로 작동합니다. 하지만 /은 Windows에서 올바른 경로 구분 기호가 아닙니다 (\). 예를 들어 Paths.get("C:", "test.txt").toString()을 사용하여 올바른 경로를 만들 수 있습니다. 올바른 구분 기호는 File.separator에도 정의되어 있습니다.

0

기본 Java 기능을 사용하면 쉽게 작업을 수행 할 수 있습니다. 먼저, 파일을 열고 라인을 읽어야합니다. Files.lines (Path.get ("path/to/file"))으로 쉽게 달성 할 수 있습니다. 둘째, 지시에 따라 반환되는 모든 행을 반복해야합니다. 스트림 API를 모르면 Files.lines (...)에서 까지의 값을 String[] lines = Files.lines(Paths.get("path/to/file")).toArray(a -> new String[a]);을 사용하여 배열로 변경할 수 있습니다. 이제 lines 변수에는 입력 파일의 모든 행이 있습니다.

그런 다음 각 줄을 두 부분 (String.split)으로 분할하고 첫 번째 부분이 찾고있는 부분 (String.equals)과 일치하는지 확인해야합니다. 그런 다음 두 번째 것을 반환하십시오.

관련 문제