Java PrintWriter FileNotFound

Java PrintWriter FileNotFound

我在写入 txt 文件时遇到问题。我收到 FileNotFound 异常,但我不知道为什么,因为该文件肯定存在。这是代码。

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.File;

public class Save
{
    public static void main(String[] args)
    {
        File file = new File("C:/Users/Daniel/Desktop/Programs/Save Data Test/save.txt");
        PrintWriter pw = new PrintWriter(file);
        pw.println("Hello World");
        pw.close();
    }
}

在创建 PrintWriter put

之前,您必须创建带有目录的实际文件
file.mkdirs();
file.createNewFile();

将其与正确的 try 和 catch 块一起使用看起来像这样...

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;

public class Save
{
    public static void main(String[] args)
    {
        File file = new File("save.txt");
        try {
            file.mkdirs();
            file.createNewFile();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        try {
            PrintWriter pw = new PrintWriter(file);
            pw.println("Hello World");
            pw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}

仅仅因为您知道文件在那里,并不意味着您的代码在尝试处理之前不应该检查它是否存在。

就您的 FileNotFound 异常而言,如果 IDE 检测到可能发生异常,一些(如果不是全部的话)Java IDE 会强制您编写 try/catch 块.

例如 NetBeans,代码甚至无法编译:

您必须编写一个 try/catch 块来处理潜在的异常

public static void main(String[] args) {
    File file = new File("C:/Users/Daniel/Desktop/Programs/Save Data Test/save.txt");
    if (file.exists()) {
        try {
            PrintWriter pw = new PrintWriter(file);
            pw.println("Hello World");
            pw.close();
        } catch (FileNotFoundException fnfe){
            System.out.println(fnfe);
        }
    }
}