[英]Permission denied when gunzip a file in Java
给定以下代码,我可以使用gunzip压缩“ .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”一样?
在Java中没有标准的sudo
方法。 但你可以sudo
Java程序sudo java TestCSVDataToMap
。
Java并非旨在管理OS进程访问权限。
使用sudo
启动java
进程
sudo java -jar myjar.jar
或者,写入您确实具有写入权限的文件夹(例如/tmp
或$HOME
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.