2012-11-05 4 views
2

텍스트 파일의 각 줄에 나열된 질문을 읽은 다음 나중에 개별적으로 호출 할 수 있도록 각 줄을 배열에 추가하려고합니다. 나는 자바로 할 수 있다고 거의 긍정적이지만, 어떻게할지는 불확실하다. 그것은이 함께 할 많이 나던하지만 나는이 질문을 보유하고있는 파일입니다 언급 한 바와 같이,Java : 텍스트 파일의 각 줄을 읽고 각 줄을 배열 요소로 설정하는 방법은 무엇입니까?

private static String readFile(String pathname) { 
    String line = null; 
    try { 
     BufferedReader reader = new BufferedReader(new FileReader(pathname)); 
     while((line = reader.readLine()) != null){ 
      System.out.println(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return line; 
} 

:

나는 전체 텍스트 파일을 읽고 문자열로 모두를 설정하는 방법을 알아낼 않았다 . 이 문제에 대한 해결책을 얻은 후에는 질문에 대한 모든 대답을 위해 다른 파일을 가지고있을 것이므로 그 파일에 대해 동일한 작업을 수행 할 것입니다.

누구나 지나치게 복잡하지 않다는 것을 알고 있습니까? 복잡하다면 말해줘. 다른 사이트에 대한 링크가 아닌 일부 유형의 예제를 원합니다. 나는 단지 그것을 잡을 것이라고 말하지 않는다.

감사합니다.

P. 이 주제에 대한 다른 질문을 읽었으나 Java에서 수행하려고 시도하는 것에 대한 적절한 답 및/또는 예를 찾을 수 없습니다.

+0

당신이 연결해야 어떤 상황이 있습니까 질의 응답 – Suranga

+1

'전체 텍스트 파일을 읽고이를 문자열로 설정하는 방법을 알아 냈습니다 :'* * NO **, 반환하면 String이 null이됩니다. – jlordo

답변

5

내가 ArrayList를를 사용하는 것이 ... 같은 ... 그런데

ArrayList<String> questions = new ArrayList<String>(); 


/// in your loop... 
while((line = reader.readLine()) != null){ 
    questions.add(line); 
} 

는, 그런데 당신은 당신의 방법 중 유일한 방법을 구성했습니다 당신의 루프는 라인이 널이기 때문에, return 문에 도달 할 때까지 null을 반환합니다. 너 여기 실제로 돌아 오려고하는거야? 그것이 라인의 전체 파일이라면 당신은 당신이 갈 때 그것들을 String에 추가 할 필요가 있습니다.

1
private static String readFile(String pathname) { 
    List<String> lines = new ArrayList<String>(); 
    String line = null; 
    try { 
     BufferedReader reader = new BufferedReader(new FileReader(pathname)); 
     while((line = reader.readLine()) != null){ 
      lines.add(line) ; 
      System.out.println(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

내가 한 것처럼 ArrayList<String>을 사용하면 동적으로 커집니다. 필드로 선언하고,이 예제에서 로컬 변수를 사용했습니다. 당신과 같이 나중에 반복 할 수 있습니다

for(String line : lines) 
    { 
     System.out.println(line) ; 
    } 
2

대신 배열의 동적 ArrayList을 사용하고 구체적인 코드를 찾을 수 있습니다.

private static List<String> readFile(String pathname) { 
    String line = null; 
    List<String> list = new ArrayList<String>(); 
    try { 
     BufferedReader reader = new BufferedReader(new FileReader(pathname)); 
     while((line = reader.readLine()) != null){ 
      list.add(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return list; 
} 

그리고 두 번째 파일을, 당신이 map<question,answer>을 유지해야는 Map<String,String> 의미한다. jlordo이 코멘트에 지적으로

1

문자열 arraylist를 만들고 각 행을 readLine()을 사용하여 추가 할 수는 없습니까? 그런 다음 arraylist를 일반 배열로 변환 할 수 있습니다.

listArray.toArray(strArray); 
1

사용 구아바 Files :

한 줄의 코드 :

System.out.println(Files.readLines(new File("C:\\sample.txt"), Charsets.UTF_8)); 
0

이 자바 8 정말 간단하고 간결 :

List<String> fileLines = Files.lines(Paths.get("/file/path/")).collect(Collectors.toList()); 
관련 문제