拒绝访问 - 无法在某个目录中创建文件

时间:2014-08-13 02:28:09

标签: java file access-denied

当我尝试在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp中创建文件时,出现以下错误:

java.io.FileNotFoundException: C:\ProgramData\Microsoft\Windows\Start Menu\Progr
ams\StartUp\test.bat (Access is denied)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at Program.testMethod(Program.java:26)
        at Program.main(Program.java:14)

我想知道为什么我会收到此错误以及如何解决此问题。

当我按照下面建议在路径周围加上引号时,我收到以下错误:

java.io.FileNotFoundException: "C:\ProgramData\Microsoft\Windows\Start Menu\Prog
rams\StartUp\test.bat" (The filename, directory name, or volume label syntax is i
ncorrect)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at Program.testMethod(Program.java:26)
        at Program.main(Program.java:14)

第26行是:

BufferedWriter w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("\"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\test.bat\""), "utf-8"));

2 个答案:

答案 0 :(得分:5)

这肯定是用户在C盘上的访问权限。程序数据是受限文件夹,只能由具有完全访问C驱动器的管理员访问。

这是windows中的限制区域,而不是java代码的问题。如果您检查,您将无法在此StartUp文件夹中创建任何新文件。

检查您对C盘的访问权限:

  1. 转到路径:C:\ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ StartUp。
  2. 右键单击,转到属性 - &gt;安全选项卡 - &gt;选择用户 - &gt;点击编辑
  3. 分配适当的权限,您就可以在那里创建文件。

答案 1 :(得分:1)

没有引号的原始迭代是表示文件路径的正确方法,但根据例外情况,您很可能无法在所述文件夹中创建文件 - 您可以通过打开Windows资源管理器中的文件夹,并通过右键单击上下文菜单手动创建文件。