如何在Java中使用PrintWriter和File类?

我试图理解PrintWriter是一个我正在做的小程序,而我似乎无法让java创build这个文件,然后写上它。 当我执行下面的程序时,它会在第9行中给我一个Filenotfoundexeption错误。它也不能使我指定的目录中的文件。 我是新来的,所以请尽量保持答案简单。 我正在使用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 (); } } 

如果该目录不存在,则需要创build它。 Java不会自己创build它,因为File类只是一个根本不存在的实体的链接。

正如你所说的错误是该文件无法创build。 如果您阅读PrintWriter构造函数的文档,您可以看到

FileNotFoundException – 如果给定的string不表示现有的可写常规文件,并且不能创build该名称的新常规文件,或者在打开或创build文件时发生其他错误

您应该尝试为之前包含的文件夹创build一个path:

 File file = new File("C:/Users/Me/Desktop/directory/file.txt"); file.getParentFile().mkdirs(); PrintWriter printWriter = new PrintWriter(file); 
 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 (); } } 

抛出该文件的exception。

将File对象传递给构造函数PrintWriter(File file)

 PrintWriter printWriter = new PrintWriter(file); 
 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(); } } } } 

你应该清楚java中的exception。 在Java中有检查exception和未经检查的exception。

检查exception在编译时检查(不是抛出,只是检查)编译器在运行时顺利执行程序。

注意:在我们的程序中,如果它们是检查exception会上升的机会,那么我们应该通过try catch或throws关键字来处理检查的exception。否则我们将得到一个编译时间错误:

CE:意外的exceptionjava.io.FileNotFoundException;必须被捕获或声明为抛出。

如何解决:1.把你的代码放在try catch块中:

2.如上面其他人所示,抛出关键字。

build议:阅读更多关于例外(我个人喜欢这个话题)

Java通常不接受“/”来定义一个文件目录,所以试试这个:

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

如果文件不存在,请执行以下操作:

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

需要任何Java帮助,只是来找我。

那么我认为首先保持整个主要的尝试赶上(或者你可以使用public static void main(String arg[]) throws IOException ) ,然后也使用文件的完整path,你正在写

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

所有那些像用户,我,桌面,目录directies应该是用户。 Java不会让目录拥有自己的。 它应该是

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

}

PrintWriter类实际上可以为你创build文件。

这个例子在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(); 

有关有效编码的列表, 请参阅文档。

或者,您可以将文件path传递给PrintWriter类而不声明编码。

双击file.txt ,然后保存它, command + s ,在我的情况下工作。 另外,请确保file.txt保存在项目文件夹中。 如果这不起作用。

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