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
相关产品推荐
相关产品推荐

