【发布时间】:2016-01-17 16:58:32
【问题描述】:
在我的程序执行期间,它会创建一个包含两个子目录/两个文件夹的目录。我需要将一个 Jar-File 复制到其中一个文件夹中。我的程序类似于安装程序。 jar文件的复制不是这里的问题,而是创建的目录的权限问题。
我尝试使用File.setWritable(true, false) 以及.setExecutable 和.setReadable 方法设置目录的权限(在实际使用mkdirs() 方法创建它们之前),但仍然拒绝访问子目录。
这是我创建两个子目录之一的代码摘录:
folderfile = new File("my/path/to/directory");
folderfile.setExecutable(true, false);
folderfile.setReadable(true, false);
folderfile.setWritable(true, false);
result = folderfile.mkdirs();
if (result) {
System.out.println("Folder created.");
}else {
JOptionPane.showMessageDialog(chooser, "Error");
}
File source = new File("src/config/TheJar.jar");
File destination = folderfile;
copyJar(source, destination);
还有我的“copyJar”方法:
private void copyJar(File source, File dest) throws IOException {
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(source);
os = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer))>0) {
os.write(buffer, 0, length);
}
} catch (Exception e) {
e.printStackTrace();
}
is.close();
os.close();
}
在os = new FileOutputStream(dest); 处,调试器会抛出一个FileNotFoundException,并说明对目录的访问已被拒绝。
有没有人知道我做错了什么或者有更好的解决方案来通过 Java 设置权限?提前致谢!
【问题讨论】:
-
您是否检查了文件系统,您的不同目录的权限和所有者是什么?
-
@Gaël 是的,它们都具有只读权限,即使我通过 Java 将它们设置为可写...我确信在创建目录时我做错了什么
-
你应该试试 boolean result = folderfile.setWritable(true, false); System.out.println(结果)...
-
请注意,在 Unix 系统上您可能需要先调用
umask(2)。 -
我使用的是 Windows 7
标签: java file exception permissions directory