当我尝试在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"));
答案 0 :(得分:5)
这肯定是用户在C盘上的访问权限。程序数据是受限文件夹,只能由具有完全访问C驱动器的管理员访问。
这是windows中的限制区域,而不是java代码的问题。如果您检查,您将无法在此StartUp文件夹中创建任何新文件。
检查您对C盘的访问权限:
答案 1 :(得分:1)
没有引号的原始迭代是表示文件路径的正确方法,但根据例外情况,您很可能无法在所述文件夹中创建文件 - 您可以通过打开Windows资源管理器中的文件夹,并通过右键单击上下文菜单手动创建文件。