2014-09-20 4 views
1

단순히 2 차원 배열 "퍼즐"을 파일에 쓰려고합니다. 내 배열의 각 'char'값을 통해 읽은 파일을 가정으로 쓰는 double for 루프가 있습니다. 내 코드에서 오류를 찾을 수 없습니다. 이 파일은 프로그램을 실행할 때 수정되지만 여전히 비어 있다고 말합니다. 고마워요! 코드 테스트도 컴파일되지 :Java PrintWriter가 작동하지 않습니다.

public void writeToFile(String fileName) 
{ 
try{ 
    PrintWriter pW = new PrintWriter(new File(fileName)); 
    for(int x = 0; x < 25; x++) 
    { 
     for(int y = 0; y < 25; y++) 
     { 
      pW.write(puzzle[x][y]); 
     } 
     pW.println(); 
    } 
    } 
    catch(IOException e) 
    { 
    System.err.println("error is: "+e.getMessage()); 
    } 
} 

답변

7

그것을 세척하고 자원

public void writeToFile(String fileName) { 

    // **** Note that pW must be declared before the try block 
    PrintWriter pW = null; 
    try { 
    pW = new PrintWriter(new File(fileName)); 
    for (int x = 0; x < 25; x++) { 
     for (int y = 0; y < 25; y++) { 
      pW.write(puzzle[x][y]); 
     } 
     pW.println(); 
    } 
    } catch (IOException e) { 
    // System.err.println("error is: "+e.getMessage()); 
    e.printStackTrace(); // *** this is more informative *** 
    } finally { 
    if (pW != null) { 
     pW.close(); // **** closing it flushes it and reclaims resources **** 
    } 
    } 
} 

주의 할을 회수하기 위해 finally 블록에 PrintWriter를 닫습니다.

또 다른 옵션은 try with resources입니다.

+0

마침내 성명에서 pW를 찾지 못했습니다. "symbol : PW를 찾을 수 없습니다"라고 말합니다. – user43043

+0

@ user3908256 : 내 예제를주의 깊게 살펴보십시오. 특히 *** 변수를 선언하십시오. ** try 블록 위에 ** 있습니다. –

+0

AHH 죄송합니다 - 시도해보십시오 – user43043

관련 문제