在Java中使用gunzip文件时,权限被拒绝

时间:2014-10-23 19:46:09

标签: 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'一样?

2 个答案:

答案 0 :(得分:1)

Java中没有sudo的标准方法。但是你可以sudo你的Java程序sudo java TestCSVDataToMap

Java并非旨在管理操作系统进程访问权限。

答案 1 :(得分:0)

使用java

开始您的sudo流程
sudo java -jar myjar.jar

或者,写入您有权写入的文件夹(例如/tmp$HOME)。