В доступе отказано, когда файл заархивирован в Java
Учитывая следующие коды, которые я использую, чтобы заархивировать файл '.gz':
public class TestCSVDataToMap {
private static final String INPUT_GZIP_FILE = "/opt/old.csv.gz";
private static final String OUTPUT_FILE = "/opt/new.csv";
public static void main(String[] args) throws IOException{
TestCSVDataToMap dm = new TestCSVDataToMap();
dm.gunzipIt();
}
public void gunzipIt(){
byte[] buffer = new byte[1024];
try{
GZIPInputStream gzis =
new GZIPInputStream(new FileInputStream(INPUT_GZIP_FILE));
FileOutputStream out =
new FileOutputStream(OUTPUT_FILE);
int len;
while ((len = gzis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
gzis.close();
out.close();
System.out.println("Done");
}catch(IOException ex){
ex.printStackTrace();
}
}
}
выбрасывает такое исключение:
java.io.FileNotFoundException: /opt/new.csv (Permission denied)
это потому, что путь '/opt' не может вносить какие-либо изменения. Но я могу использовать
sudo gunzip /opt/old.csv.gz
разархивировать файл. Итак, что я должен делать в Java, чтобы действовать как "sudo"?
2 ответа
Там нет стандартного способа sudo
на Яве. Но вы можете sudo
ваша программа на Java sudo java TestCSVDataToMap
,
Java не предназначена для управления правами доступа к процессам ОС.
Начни свой java
процесс с sudo
sudo java -jar myjar.jar
Или, напишите в папку, у вас есть разрешение на запись (например, /tmp
или же $HOME
).