2013-11-10 5 views
0

최근 불행히도 읽어야 할 대용량의 텍스트 파일을 매우 많이 읽었습니다. 그래서 나는 파일을 정렬하고 각 nextLine을 삭제하는 방법을 자바 프로그램을 사용하여 생각하려고 노력해 왔습니다.자바의 텍스트 파일에서 특정 문자 삭제하기

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rhoncus interdum  condimentum. Proin viverra 
justo vel imperdiet sagittis, purus sapien sagittis mi, et blandit purus ante non libero. Nulla ac 
augue ut odio eleifend interdum 
ac id justo. Quisque rutrum euismod sem, vel euismod nunc convallis eu. Praesent odio velit, 
condimentum id scelerisque 
iaculis, vulputate vitae lacus. Fusce adipiscing blandit libero eu venenatis. 
Vestibulum nec urna 
pulvinar arcu pretium 
pretium. Duis vitae augue dolor. Etiam consectetur feugiat 
diam sit amet gravida. 

우리가 이런 식으로 뒤집어 그것을 좋아하는 것 :

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rhoncus interdum 
condimentum. Proin viverra, justo vel imperdiet sagittis, purus sapien sagittis mi,  
blandit purus ante non libero. Nulla ac augue ut odio eleifend interdum ac id justo. 
Quisque rutrum euismod sem, vel euismod nunc convallis eu. Praesent odio velit, 
condimentum id scelerisque iaculis, vulputate vitae lacus. Fusce adipiscing blandit 
libero eu venenatis. Vestibulum nec urna pulvinar arcu pretium pretium. Duis vitae 
augue dolor 

을 나는 매우 독서 경험이 아니에요/자바를 사용하여 텍스트 파일을 작성 우리는이 텍스트가 있다면 예를 들어

. 내 현재 아이디어는 다음 줄의 값과 같은지 확인하고 각 줄 값을 읽는 것입니다. 그렇지 않으면 그 줄을 별도의 텍스트 파일에 기록합니다. 하지만이 방법을 구현하는 방법에 대해서는 잘 모르겠습니다. 다음 문자가 다음 줄인지 확인하는 방법을 모르겠습니다.

도움이 될 것입니다.

+0

각 줄을 문자열에 할당 한 다음 해당 문자열에 조건을 적용하는 이유는 무엇입니까? – Waclock

+0

달성해야 할 EXCACT 작업은 무엇입니까? –

+0

나는 내 대답을 받아 들였지만, 내 대답은 당신이 찾고있는 것을 완벽하게 생각하지 않는다. 도움이 더 필요하기 때문에 게시물을 수정 했습니까? –

답변

1
File file = new File("yourFilePath.txt"); // create File object to read from 
Scanner scanner = new Scanner(file);  // create scanner to read 
Printwriter writer = new PrintWriter("someOutputFile.txt"); // create file to write to 

while(scanner.hasNextLine()){ // while there is a next line 
    String line = scanner.nextLine(); // line = that next line 

    // do something with that line 
    String newLine = ""; 

    // replace a character 
    for (int i = 0; i < line.length(); i++){ 
     if (line.charAt(i) != '*') { // or anything other character you chose 
      newLine += line.charAt(i); 
     } 
    } 

    // print to another file. 
    writer.println(newLine); 
} 

(그리고 그! 좋은 일이 될 것이다),하지만 그건 StringBuilder를 사용하여 필요합니다.

1

스캐너를 사용하여이 작업을 수행 할 수 있습니다.

Scanner in = new Scanner(new File(filename)); 
String new_file_string = ""; 
while (in.hasNextLine()) 
    new_file_string += in.nextLine(); 
// write new_file_string to file. 
+0

스캐너에 그 방법이 있다는 것을 알지 못했습니다. –

0

나는 당신이의 BufferedReader를 사용하고 파일을 한 번에 한 줄을 읽어 readLine() 방법을 활용하는 것이 좋습니다.

  • 빈 줄을 읽을 때이 메서드는 (null이 아닌) 빈 문자열을 반환합니다.

  • 파일의 끝에 도달하면 메서드는 null을 반환합니다.

  • 그렇지 않으면이 메서드는 줄 종결자가 제거 된 줄을 반환합니다. (라인을 출력 할 때 줄 종결자를 추가하는 것을 잊지 마라!)

이것은 당신이 프로그램을 직접 작성하는 데 충분해야한다. 또한 그냥 같은 파일에 쓸 수

+0

하지만 완전히 비어있는 행에서만 작동합니까? –

+0

그래. "완전히 비어 있지 않은"행을 제거하려면 해당 행을 테스트해야합니다. 그러나 제거 기준이 무엇인지에 대해 말하지 않았으므로이 테스트를 수행하는 방법을 설명 할 수는 없습니다. –

+0

한편, 실제로 개머리리기만을 제거하고 싶다면 세 번째 글 머리 기호를 수정하여 라인 종결자를 다시 추가하지 마십시오! 그러나, 나는 가독성을 향상시키기 위해 newline을 제거하는 것을 고려하지 않았다. –

관련 문제