2011-08-16 3 views
-2

1 개의 .txt 파일에서 2 행을 검색하여 대화 상자로 출력해야합니다. 내 코드는 현재특정 행 읽기 - Java

private String getfirstItem() { 
    String info = ""; 
    File details = new File(myFile); 
    if(!details.exists()){ 
      try { 
       details.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

     BufferedReader read = null; 
    try { 
     read = new BufferedReader (new FileReader(myFile)); 
    } catch (FileNotFoundException e3) { 
     e3.printStackTrace(); 
    } 

    for (int i = baseStartLine; i < baseStartLine + 1; i++) { 
        try { 
       info = read.readLine(); 
       } catch (IOException e) { 

        e.printStackTrace(); 
       } 
      } 
      firstItem = info;    
      try { 
       read.close(); 
     } catch (IOException e3) { 

      e3.printStackTrace(); 
     } 
      return firstItem; 
} 

private String getsecondItem() { 
    File details = new File(myFile); 
    String info = ""; 
    BufferedReader reader = null; 
    if(!details.exists()){ 
try { 
    details.createNewFile(); 
} catch (IOException e) { 
    e.printStackTrace(); 

}} 



try { 
reader = new BufferedReader (new FileReader(myFile)); 
} catch (FileNotFoundException e3) { 
    e3.printStackTrace(); 
    } 

for (int i = modelStartLine; i < modelStartLine + 1; i++) { 
      try { 
    info= reader.readLine(); 
      } catch (IOException e) { 
     e.printStackTrace();} 
     modelName = info;} try { 
      reader.close(); 
} catch (IOException e3) { 
    e3.printStackTrace(); 
    } 
return secondItem; 
} 

입니다. 그러나 둘 다 동일한 값을 유지합니까? modelStartLine = 1 및 baseStartLine = 2

답변

2

실제로는 이 아니며 모든 행은입니다. 다른 번호에서 루프 인덱스를 시작하지만 파일의 시작 부분부터 한 번만 반복합니다. 루프는 다음과 같이 보일 것이다 :

public string readNthLine(string fileName, int lineNumber) { 
    // Omitted: try/catch blocks and error checking in general 
    // Open the file for reading etc. 

    ... 

    // Skip the first lineNumber - 1 lines 
    for (int i = 0; i < lineNumber - 1; i++) { 
     reader.readLine(); 
    } 

    // The next line to be read is the desired line 
    String retLine = reader.readLine(); 

    return retLine; 
} 

지금 당신은이 같은 함수를 호출 할 수 있습니다 : 그러나

String firstItem = readNthLine(fileName, 1); 
String secondItem = readNthLine(fileName, 2); 

합니다. 파일의 처음 두 줄만 표시하면 처음에는 둘 다 읽을 수 있습니다.

// Open the file and then... 
String firstItem = reader.readLine(); 
String secondItem = reader.readLine(); 
+0

대단히 감사합니다. – RayCharles

0

이게 맞습니다. 두 가지 방법으로 파일의 첫 번째 줄만 읽습니다. 새로운 reader를 만들고 die readLine() 메서드를 사용하여 행을 읽으면 판독기가 파일의 첫 번째 행을 반환합니다. for 루프의 수에 관계없이

for(int i = 0; i <= modelStartLine; i++) { 
    if(i == modelStartLine) { 
     info = reader.readLine(); 
    } else { 
     reader.readLine(); 
    } 
} 

이것은 한 줄을 읽는 간단한 해결책입니다.

첫 줄에는 for-loop가 필요하지 않습니다. 독자를 만들고 readLine() 메서드를 호출 할 수 있습니다. 첫 번째 Line을 반환합니다.