在執行我的程序期間,它創建一個包含兩個子目錄/兩個文件夾的目錄。進入這些文件夾中的一個,我需要複製一個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)... –