在执行我的程序期间,它创建一个包含两个子目录/两个文件夹的目录。进入这些文件夹中的一个,我需要复制一个Jar文件。我的程序类似于安装例程。 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将它们设置为可写。我确信我在创建目录 –
时出错,您应该尝试布尔结果= folderfile.setWritable(真假); System.out.println(result)... –