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

SPA*_*ARK 50 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 ();       
  }
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 73

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

如您所述,错误是无法创建文件.如果您阅读PrintWriter构造函数的文档,您可以看到

FileNotFoundException - 如果给定的字符串不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误

您应该尝试为之前包含的文件夹创建路径:

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

PrintWriter printWriter = new PrintWriter(file);
Run Code Online (Sandbox Code Playgroud)

  • +1对于`file.getParentFile().mkdirs()`:) (16认同)

小智 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 ();       
  }
}
Run Code Online (Sandbox Code Playgroud)

抛出该文件的异常.


Eng*_*uad 5

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

PrintWriter printWriter = new PrintWriter(file);
Run Code Online (Sandbox Code Playgroud)


ric*_*ard 5

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();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)