2

我有一个 Java 应用程序,用户可以使用以下代码创建一个文本文件并将其保存在他想要的计算机上的任何位置:

File txtFile = new File( path );
Writer writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( txtFile ), "UTF-8" ) );  // Error occurs here.

但是许多使用 Windows 7 的用户报告说,当将文件保存到"C:\"时,他们会收到 " Access is denied " 错误。我发现这是因为他们需要管理员权限才能在 Win7 中将文件保存在这样的路径中。

除了向用户显示警告消息:“您无法将文件保存在此路径”之外,我能否以某种方式将文件保存在此路径中,例如是否有办法通过 Java 代码在 Win7 中获得管理员权限,或者类似的东西?

4

3 回答 3

3

简短的回答 - 不。

如果需要保存到C盘,则需要权限。如果这个程序只需要创建文件,你可以使用用户临时文件夹。请参阅 System.getProperty()

于 2012-10-13T20:38:21.080 回答
2

Windows Vista 和 Windows 7 启用了 UAC。UAC 拒绝在某些位置创建新文件,没有管理权限。

检查您的权限并确保在 ADMINISTRATIVE 帐户中执行 java 可执行文件,或禁用 UAC。

为此,请转到“开始”,键入“CMD.EXE”-> 右键单击​​ cmd.exe 文件并以管理员身份运行。然后导航到包含 .class 文件的位置。然后输入java ClassFile并按回车

于 2012-10-13T20:36:24.027 回答
2

您是在使用 cmd ,即 Dos 来运行您的文件还是 eclipse?无论您使用什么,看起来您都以默认用户身份运行。在 Windows 7 中,默认情况下 UAC 将写入 system.directory。

执行以下操作,希望它应该工作1

> If cmd.exe
>      Then when you open run from start menu. Right click it, select run as administrator and  then run your application
>     
>     If eclipse/any other IDE
>     
>     Close existing, right clicl eclipse,select run as admim and then run your application
> 
> Hope this helps
于 2012-10-13T20:43:57.603 回答