How to use PrintWriter and File classes in Java?

JavaPrintwriter

Java Problem Overview


I am trying to understand PrintWriter for a small program I'm making, and I cant seem to get java to make the file and then write on it. When I execute the program below it gives me a Filenotfoundexeption error on line 9. It also fails to make the file in the directory that I specified. I am new to this so please try and keep the answers simple. I am using Eclipse.

import java.io.PrintWriter;
import java.io.File;

public class Testing {

  public static void main(String[] args) {
	
	File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
	PrintWriter printWriter = new PrintWriter ("file.txt");
	printWriter.println ("hello");
	printWriter.close ();		
  }
}

Java Solutions


Solution 1 - Java

If the directory doesn't exist you need to create it. Java won't create it by itself since the File class is just a link to an entity that can also not exist at all.

As you stated the error is that the file cannot be created. If you read the documentation of PrintWriter constructor you can see

> FileNotFoundException - If the given string does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file

You should try creating a path for the folder it contains before:

File file = new File("C:/Users/Me/Desktop/directory/file.txt");
file.getParentFile().mkdirs();

PrintWriter printWriter = new PrintWriter(file);

Solution 2 - Java

import java.io.PrintWriter;
import java.io.File;

public class Testing {

  public static void main(String[] args) throws IOException {

    File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
    PrintWriter printWriter = new PrintWriter ("file.txt");
    printWriter.println ("hello");
    printWriter.close ();       
  }
}

throw an exception for the file.

Solution 3 - Java

Pass the File object to the constructor PrintWriter(File file):

PrintWriter printWriter = new PrintWriter(file);

Solution 4 - Java

import java.io.File;
import java.io.PrintWriter;

public class Testing 
{
	public static void main(String[] args) 
	{
		
		File file = new File("C:/Users/Me/Desktop/directory/file.txt");

		PrintWriter printWriter = null;
		
		try
		{
			printWriter = new PrintWriter(file);
			printWriter.println("hello");
		}
		catch (FileNotFoundException e)
		{
			e.printStackTrace();
		}
		finally
		{
			if ( printWriter != null ) 
			{
				printWriter.close();
			}
		}
	}
}

Solution 5 - Java

Java doesn't normally accept "/" to use in defining a file directory, so try this:

 File file = new File ("C:\\Users\\user\\workspace\\FileTester\\myFile.txt");

If the file doesn't exist do:

 try {
      file.createNewFile();
 }
 catch (IOException e) {
 e.printStackTrace();
 }

Solution 6 - Java

You should have a clear idea of exceptions in java. In java there are checked exceptions and unchecked exceptions.

Checked exceptions are checked (not thrown,just checked) by the compiler at Compile time for the smooth execution of the program at run time.

NOTE: And in our program if their is a chance that a checked exception will rise, then we should handle that checked exception either by try catch or by throws key word.Otherwise we will get a compile time Error:

CE:Unexpected Exception java.io.FileNotFoundException;must be caught or declared to be thrown.

How to resolve: 1.Put your code in try catch block:

2.use throws keyword as shown by other guys above.

Advice:Read more about Exceptions.(I personally love this topic)

Solution 7 - Java

Well I think firstly keep whole main into try catch(or you can use as public static void main(String arg[]) throws IOException ) and then also use full path of file in which you are writing as

PrintWriter printWriter = new PrintWriter ("C:/Users/Me/Desktop/directory/file.txt");

all those directies like users,Me,Desktop,directory should be user made. java wont make directories own its own. it should be as

import java.io.*;
public class PrintWriterClass {

public static void main(String arg[]) throws IOException{
	PrintWriter pw = new PrintWriter("C:/Users/Me/Desktop/directory/file.txt");
	pw.println("hiiiiiii");
	pw.close();
}	

}

Solution 8 - Java

import java.io.*;

public class test{
    public static void main(Strings []args){
       
       PrintWriter pw = new PrintWriter(new file("C:/Users/Me/Desktop/directory/file.txt"));

       pw.println("hello");
       pw.close
    }

}

Solution 9 - Java

The PrintWriter class can actually create the file for you.

This example works in JDK 1.7+.

// This will create the file.txt in your working directory.

PrintWriter printWriter = null;

try {

    printWriter = new PrintWriter("file.txt", "UTF-8");
    // The second parameter determines the encoding. It can be
    // any valid encoding, but I used UTF-8 as an example.
    
} catch (FileNotFoundException | UnsupportedEncodingException error) {
    error.printStackTrace();
}

printWriter.println("Write whatever you like in your file.txt");

// Make sure to close the printWriter object otherwise nothing
// will be written to your file.txt and it will be blank.
printWriter.close();

For a list of valid encodings, see the documentation.

Alternatively, you can just pass the file path to the PrintWriter class without declaring the encoding.

Solution 10 - Java

Double click the file.txt, then save it, command + s, that worked in my case. Also, make sure the file.txt is saved in the project folder. If that does not work.

PrintWriter pw = new PrintWriter(new File("file.txt"));
pw.println("hello world"); // to test if it works.

Solution 11 - Java

If you want to use PrintWrite then try this code

public class PrintWriter {
	public static void main(String[] args) throws IOException {

		java.io.PrintWriter pw=new java.io.PrintWriter("file.txt");
		pw.println("hello world");
		pw.flush();
		pw.close();
		
	}

}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSPARKView Question on Stackoverflow
Solution 1 - JavaJackView Answer on Stackoverflow
Solution 2 - JavaJeanGrayView Answer on Stackoverflow
Solution 3 - JavaEng.FouadView Answer on Stackoverflow
Solution 4 - JavaStradivariuzView Answer on Stackoverflow
Solution 5 - JavaGalen NareView Answer on Stackoverflow
Solution 6 - JavaImran Rafiq RatherView Answer on Stackoverflow
Solution 7 - JavaRakesh KumarView Answer on Stackoverflow
Solution 8 - Javauser3000441View Answer on Stackoverflow
Solution 9 - JavaBadr DRAIFIView Answer on Stackoverflow
Solution 10 - Javasaid adenView Answer on Stackoverflow
Solution 11 - JavaPratik GhoshView Answer on Stackoverflow