2014-05-09 1 views
0

나는 텍스트 파일에서 빈 줄을 읽고 제거하는 BufferedReaderBufferedRriter을 가지고있다. 그것은 내 인생이 그것을 끝내는 좋은 해결책을 찾을 수 없다는 것을 제외하고는 모두 잘 작동합니다. 버퍼 된 리더 및 라이터를 사용하여 텍스트 파일의 빈 줄을 제거합니다. 그러나 나는 항상 마지막 줄을 비워 둔다.

public static void cleanUpData(){ 
     File inputFile = new File("C:\\Users\\student\\workspace\\EmployeePunch\\src\\EmployeeData.txt"); // Your file 
File tempFile = new File("C:\\Users\\student\\workspace\\EmployeePunch\\src\\EmployeeDataNew.txt");// temp file 
BufferedReader reader = null; 
BufferedWriter writer = null; 
try{ 
reader = new BufferedReader(new FileReader(inputFile)); 
writer = new BufferedWriter(new FileWriter(tempFile,true)); 
String currentLine; 

while((currentLine = reader.readLine()) != null) { 
    if(currentLine.equals("")) continue; 
    writer.append(currentLine+"\n"); 
} 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
     }finally{ 
      try { 

       reader.close(); 
       inputFile.delete(); 
       writer.close(); 
       boolean successful = tempFile.renameTo(inputFile); 
       System.out.println(successful); 
       validateEmployee(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 

     } 
    } 

나는 그것을하고있는 이유는 writer.append(currentLine+"\n");의되고 있습니다하지만 다른 솔루션이 마지막 줄에서 중지하는 것 알아?

+"\n"을 사용하지 않으려면 마지막 줄 바로 앞에 언제 있는지 알 수있는 방법이 있습니까?

답변

2

모든 출력 행 다음에 개행을 추가하지 마십시오. 대신, 첫 행 다음에 모든 행 앞에 삽입하십시오.

예를 들어, 다음 코드를 사용하여 while 루프를 대체 할 수

속임수를 썼는지
boolean needsNewLine = false; 
while((currentLine = reader.readLine()) != null) { 
    if(currentLine.equals("")) continue; 
    if (!needsNewLine) { 
     needsNewLine = true; 
    } else { 
     writer.append('\n'); 
    } 
    writer.append(currentLine); 
} 
+0

; 간단한 실수 ... BufferedReader.lines(). count()를 호출하여 비교하려고 시도하여 더 많은 합병증을 일으키고있었습니다 ... 휴식을 취할 필요가 있습니다, 감사합니다! – Tukajo

관련 문제