1

내가 만든 기능에 약간의 문제가 있습니다. 나는이 함수에 문자열을 줄 때마다 동일한 파일의 새 줄을 구할 것이지만 실제로는 마지막 문자열 만 저장한다고합니다. 그것은 또 다시 덮어처럼, BufferedWriter의 예를 들어 도움BufferedOutputStream 여러 줄 파일에 쓰기

public void WritingGZFile(String directory, String linesWithPattern, String newFile) throws IOException 
    { 
     newFile = directory + '\\' + newFile; 
      BufferedOutputStream out = new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(
        newFile))); 
      out.write(linesWithPattern.getBytes()); 
      out.write("\r\n".getBytes()); 
      out.close(); 
    } 

을 필요로하는 것은 그렇게하는 데 도움이 개행 문자라고하는 방법이 있습니다.

하지만 GZIPOutputStream 클래스를 사용하고자하므로 BufferedOutputStream이 필요합니다.

어떻게해야할까요? 감사합니다 ypu

+0

새 FileOutputStream (newFile, true)을 사용하여 다시 쓰지 않고 추가하도록 지시하면 어떻게됩니까? – ControlAltDel

+0

BufferedOutputStream을 사용할 때, 당신은 그것을 닫기 전에'out.flush()'을 사용해야합니다. – Ascalonian

+0

@Ascalonian'close()'하면'flush()'할 필요가 없습니다. – eckes

답변

2

당신은 파일을 덮어 씁니다. FileOutputStream으로 열면 처음부터 시작됩니다. 스트림을 열어 두거나 파일 (이름) 뒤에 true을 지정하여 append mode을 사용할 수 있습니다.

BufferedOutputStream out = new BufferedOutputStream(
           new GZIPOutputStream(
             new FileOutputStream(newFile, true) 
            ) 
           ); 
각 라인에 대한 새로운 스트림을 열 경우 상당한 오버 헤드를 가지고있는 GZIPOutputStream으로

하지만,이 방식으로 작동 정의된다. (다시 말하지만 열어두면 도움이됩니다).

+0

감사합니다. 그 사람 : D : D. 나는이 모드를 잊었다. 다시 감사합니다! 6 분 안에 – Nicholas

+2

, 답변으로 표시하겠습니다. – Nicholas