2012-02-10 5 views
2

파일을 만들고 해당 파일에 계속 추가하려고합니다. 내 코드에서 파일이 생성되고 있지만 그 파일에는 아무 것도 추가하지 않습니다. 왜 그런지 몰라? 누군가가 내가 뭐하는 거지 무슨 저를 제안 할 수 있습니다 ..파일에 쓸 수 없습니다.

업데이트 코드 : -

 File file =new File("D://GeoData1.txt"); 

    BufferedWriter out = new BufferedWriter(new FileWriter(file, true)); 


    int j = -1; 
    while(true) {   
     j++; 
     String ipAddress = generateIPAddress(j); 
     try { 
      out.write(ipAddress); 
      System.out.println(ipAddress); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
        out.flush(); 
        out.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

    } 

답변

2

당신은 closing은 작가

--edit-- 파일을 닫으려면,인가는?

finally { 
    bufferWritter.close(); 
} 

업데이트 :

당신이 자바 7 사용하는 경우,이 시도 : The Java Tutorials에서 적응

final int NUMBER_OF_IPS_TO_APPEND = 5000; // or whatever size 
Charset charset = Charset.defaultCharset(); 
Path file = Paths.get("myfile.txt"); 

try (BufferedWriter writer = Files.newBufferedWriter(file, charset, 
       StandardOpenOption.CREATE, 
       StandardOpenOption.APPEND)) { 
    for (int i = 1; i <= NUMBER_OF_IPS_TO_APPEND; i++) { 
     String ip = generateIPAddress(i); 
     System.out.printf("Generated ip: %s\n", ip); 
     writer.append(ip + "\n"); 
    } 
} catch (IOException x) { 
    System.err.format("IOException: %s\n", x); 
} 

코드.

IPS가 콘솔과 파일에 인쇄되고 있는지 확인하십시오.

Fully working codegenerateIPAddress의 모의 구현. 실행될 때마다 myfile.txt에 5000 개의 임의 IPv4 주소 (유효성 검사 안 함)를 추가합니다.

+0

예 나는 파일을 닫습니다. – AKIWEB

+0

Nevzz03. 미안, 나는 작가를 의미했다 : D. –

+0

코드를 업데이트했습니다. 여전히 작동하지 않습니다. – AKIWEB

3

당신은 내가 추측 파일 또는 플러시 버퍼를 닫아야합니다.

+0

어떻게하면됩니까? – AKIWEB

+0

fileWritter.flush(); Java API를 북마크하십시오. http://docs.oracle.com/javase/7/docs/api/ – ra4king

+1

다음은 플러시 방법입니다. http://docs.oracle.com/javase/6/docs/ api/java/io/BufferedWriter.html # flush() – Dims

0

우선 루프는 결코 끝나지 않습니다. 최소한 어느 시점에서 멈추게해야합니다. 또한 메모리를 확보하려면 파일을 닫아야합니다. 희망이 도움이됩니다!

file.close(); 
+0

코드를 업데이트했습니다.아직도 그것의 작동하지 않습니다 – AKIWEB

1

난 그냥 파일 라이터에게 파일 객체를 전달하고 당신은 동안 (사실)와 무한 루프가있는 .getName()

BufferedWriter out = new BufferedWriter(new FileWriter(file, true)); 
+0

코드를 업데이트했습니다. 아직도 작동하지 않습니다. – AKIWEB

1

치우는 시도 할 것입니다. while (i < xy)와 같은 중단 점을 만들거나 while while 루프를 만들어야합니다 ....

0

프로그램이 실행되는 동안 변경된 사항을보고 싶다면 당신은 플러시 작가해야합니다. 머지 않아 자동으로 플러시됩니다. 텍스트 편집기에서 변경 사항을 볼 수없는 이유는 편집기에 따라 다릅니다. 예를 들어, 큰 파일을 열 수 없습니다 (프로그램에서이 파일에 문자를 매우 빠르게 추가한다는 점에 유의하십시오). 파일의 크기를 확인하십시오. 크기가 커지면 작동합니다.

파일을 모니터링하려면 꼬리과 같은 도구를 사용할 수 있습니다.

관련 문제