如何在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.