Search code examples
javafile-ioprintwriter

Java PrintWriter not working


I am simply trying to write my 2d array "puzzle" to a file. I have a double for loop which reads through each of the 'char' values in my array and supposedly writes them to the file. I can't seem to find the error in my code. The file says it is modified when I run the program, but it is still blank. Thanks guys!

    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());
  }
}

Solution

  • Close your PrintWriter in a finally block to flush it and to reclaim resources

    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 ****
         }
      }
    }
    

    Caveat: Code not tested nor compiled.

    Note that another option is to use try with resources.