You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java创建文件遇权限拒绝:FileNotFoundException问题求助

解决Java写入文件时的权限拒绝问题

嘿,别慌!刚入门Java碰到这种权限问题真的太常见了,我来帮你捋清楚怎么解决~

首先,你遇到的java.io.FileNotFoundException: ... (Access is denied),本质不是找不到文件,而是当前程序没有权限在指定路径创建/写入文件——毕竟Windows的Documents这类系统目录通常会有一定的权限限制。下面给你一步步的解决方案:

一、先换个「安全」的文件路径

优先避开系统敏感目录(比如Documents、Program Files),换成你肯定有权限的路径:

  • 桌面:C:\\Users\\cvi7\\Desktop\\data.txt
  • 你的Java项目根目录:"./data.txt"(直接写相对路径,程序会自动在项目文件夹下创建)

手动先试试在目标路径创建一个txt文件,如果能创建成功,说明路径权限没问题,接下来看代码怎么写。

二、正确创建并写入文件的代码示例

方法1:用传统的File类(兼容所有Java版本)

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterDemo {
    public static void main(String[] args) {
        // 这里换成你确定有权限的路径
        String filePath = "./data.txt";
        File file = new File(filePath);

        try {
            // 如果文件不存在,先创建
            if (!file.exists()) {
                boolean created = file.createNewFile();
                if (created) {
                    System.out.println("文件创建成功啦!");
                } else {
                    System.out.println("创建失败,检查下路径权限哦");
                    return;
                }
            }

            // 写入内容
            FileWriter writer = new FileWriter(file);
            writer.write("这是我写入的第一行数据~");
            writer.close(); // 一定要记得关闭流!
            System.out.println("数据写入成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

方法2:用Java 7+的NIO Files类(更简洁推荐)

NIO的API更简洁,还会自动处理文件创建的逻辑:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.io.IOException;

public class NioFileDemo {
    public static void main(String[] args) {
        String filePath = "./data.txt";
        String content = "用NIO写入的内容,更方便!";

        try {
            // CREATE:文件不存在就创建;WRITE:覆盖写入(如果要追加用APPEND)
            Files.write(Paths.get(filePath), content.getBytes(), 
                        StandardOpenOption.CREATE, StandardOpenOption.WRITE);
            System.out.println("写入成功!");
        } catch (IOException e) {
            System.out.println("出错了:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

三、如果一定要写入Documents目录怎么办?

如果必须写这个路径,试试这两个办法:

  • 右键你的IDE(比如IDEA、Eclipse),选择「以管理员身份运行」,再运行程序
  • 手动给Documents文件夹添加当前用户的写入权限:右键文件夹→属性→安全→编辑→添加你的用户名→勾选「写入」权限

内容的提问来源于stack exchange,提问作者Connor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:07:27