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

时间:2012-07-16 00:06:34

标签: java printwriter

我正在尝试了解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 ();       
  }
}

11 个答案:

答案 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();

    }

}