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

Java程序向网络电脑写入文件时出现Access Denied错误排查

局域网Java写入共享文件夹报Access Denied的排查方案

问题重现

平时可正常向局域网目标文件夹传输文件,但Java程序写入TXT时抛出Access is denied错误,代码及报错信息如下:

原代码

import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;

public class Answer {
    static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
    
        System.out.println("What ip?");
        String ip = input.nextLine();
        System.out.println("message?");
        String message = input.nextLine();
    
        System.out.println("ip is " + ip + "?");
        System.out.println("message is " + message + "?");
    
        try {
            FileWriter writer = new FileWriter("\\\\JOSHY-PC\\Users\\joshy\\Desktop\\New folder (4)message.txt");
                    writer.write(ip + message );
                    writer.close();
                
        }catch (IOException e){
            e.printStackTrace();
        } 
    }
}

报错信息

What ip?
192.168.1.1
message?
banana
ip is 192.168.1.1?
message is banana?
    java.io.FileNotFoundException: \\JOSHY-PC\Users\joshy\Desktop\New folder (4)message.txt 
    (Access is denied)
        at java.base/java.io.FileOutputStream.open0(Native Method)
        at java.base/java.io.FileOutputStream.open(FileOutputStream.java:293)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:235)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:123)
        at java.base/java.io.FileWriter.<init>(FileWriter.java:67)
        at answerThePhone/answerThePhone.Answer.main(Answer.java:21)

排查与解决

1. 路径拼接错误(最直接原因)

原代码中的目标路径缺少文件夹与文件名的分隔符,正确路径应为\\\\JOSHY-PC\\Users\\joshy\\Desktop\\New folder (4)\\message.txt——注意New folder (4)后添加了\\。

原路径将文件夹名和文件名直接拼接,系统会尝试创建一个名为New folder (4)message.txt的文件,这种非常规文件名可能触发系统权限校验拦截,或因路径结构识别失败导致访问被拒。

2. 运行身份权限不一致

手动传输文件时使用的是当前登录用户的权限,但Java程序的运行身份可能不同:

  • 若用IDE运行,确认IDE是以当前用户启动,而非管理员或其他账户;
  • 若打包成Jar运行,确保运行Jar的账户与手动传文件的账户一致,且拥有共享文件夹的写入权限。

3. 共享文件夹的双重权限检查

Windows共享文件夹有两层权限控制:

  • 共享权限:右键文件夹→属性→共享选项卡,确认已给目标用户开放写入权限;
  • NTFS权限:右键文件夹→属性→安全选项卡,检查目标用户是否拥有“写入”“修改”权限。

两层权限需同时满足,否则会出现手动可传但程序写入失败的情况。

修正后的代码

import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;

public class Answer {
    static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
    
        System.out.println("What ip?");
        String ip = input.nextLine();
        System.out.println("message?");
        String message = input.nextLine();
    
        System.out.println("ip is " + ip + "?");
        System.out.println("message is " + message + "?");
    
        try {
            // 修正路径分隔符
            FileWriter writer = new FileWriter("\\\\JOSHY-PC\\Users\\joshy\\Desktop\\New folder (4)\\message.txt");
            writer.write(ip + message );
            writer.close();
            System.out.println("文件写入成功");
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:07:26