我正在尝试了解PrintWriter我正在制作的一个小程序,我似乎无法让java生成该文件然后在其上写。当我执行下面的程序时,它在第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 ();
}
}
答案 0 :(得分:68)
如果目录不存在,则需要创建它。 Java不会自己创建它,因为File
类只是一个实际上根本不存在的实体的链接。
正如您所述,错误是无法创建文件。如果您阅读PrintWriter构造函数的文档,您可以看到
FileNotFoundException - 如果给定的字符串不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误
您应该尝试为之前包含的文件夹创建路径:
File file = new File("C:/Users/Me/Desktop/directory/file.txt");
file.getParentFile().mkdirs();
PrintWriter printWriter = new PrintWriter(file);
答案 1 :(得分:9)
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 ();
}
}
为该文件抛出异常。
答案 2 :(得分:5)
将File对象传递给构造函数PrintWriter(File file)
:
PrintWriter printWriter = new PrintWriter(file);
答案 3 :(得分:4)
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();
}
}
}
}
答案 4 :(得分:1)
Java通常不接受“/”来定义文件目录,所以试试这个:
File file = new File ("C:\\Users\\user\\workspace\\FileTester\\myFile.txt");
如果文件不存在,请执行:
try {
file.createNewFile();
}
catch (IOException e) {
e.printStackTrace();
}
答案 5 :(得分:1)
你应该清楚java中的异常。 在java中有检查异常和未经检查的异常。
在编译时编译器检查(不抛出,仅检查)已检查的异常,以便在运行时顺利执行程序。
注意:在我们的程序中,如果它们有可能导致检查异常上升,那么我们应该通过try catch或throws关键字来处理该检查的异常。否则我们将得到一个编译时错误:
CE:意外的异常java.io.FileNotFoundException;必须被捕获或声明被抛出。
如何解决: 1.将你的代码放在try catch块中:
2.使用throws关键字,如上面的其他人所示。
建议:阅读有关例外情况的更多信息。(我个人喜欢这个话题)
答案 6 :(得分:0)
好吧我认为首先要将整个main保持为try catch(或者你可以使用public static void main(String arg[]) throws IOException )
然后使用你正在编写的文件的完整路径
PrintWriter printWriter = new PrintWriter ("C:/Users/Me/Desktop/directory/file.txt");
用户,Me,桌面,目录等所有直接用户都应该是用户制作的。 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();
}
}
答案 7 :(得分:0)
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
}
}
答案 8 :(得分:0)
PrintWriter
class实际上可以为您创建文件。
此示例适用于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();
有关有效编码的列表,see the documentation.
或者,您可以在不声明编码的情况下将文件路径传递给PrintWriter
类。
答案 9 :(得分:0)
双击file.txt
,然后保存,command + s
,这在我的案例中有效。此外,请确保file.txt
已保存在项目文件夹中。
如果这不起作用。
PrintWriter pw = new PrintWriter(new File("file.txt"));
pw.println("hello world"); // to test if it works.
答案 10 :(得分:0)
如果要使用PrintWrite,请尝试以下代码
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();
}
}