在Linux中使用7zip将ISO提取到位置

时间:2019-06-03 16:29:11

标签: java linux

所以我正在制作一个将iso提取到位置的应用程序(主要是USB挂载点,即/ media / kp / mount_point)

pzip-full 软件包已安装在我的计算机上。因此,有关从外壳sudo 7z x -y 'filename' -o'location'中提取iso的相关代码。 Sudo,因为我将其提取到需要root的/media/kp/mount_point中。

因此,在Java中,我创建了一个函数,该函数使用我的sudo密码以sudo的身份运行上述7z命令,并记录并以String形式返回输出。

private String ExecuteShell(String command) {
    String[] cmd = {"/bin/bash","-c","echo 'mysudopass' | sudo -S "+command};
    StringBuilder joined= new StringBuilder();
    Process pb = null;
    try {
        pb = Runtime.getRuntime().exec(cmd);

        String line;
        BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream()));
        while ((line = input.readLine()) != null) {
            System.out.println(line);
            joined.append(line).append("\n");
        }
        input.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return joined.toString();
}

现在以ExecuteShell("7z x -y '"+filename+"' -o'"+location+"'")的身份运行;

这是问题,从终端运行时该命令运行正常,但是当我在Java中使用上述功能时,它会按要求打印7zip的输出,但我看不到它写在我的身上USB记忆棒,它最多只能运行5秒钟,而我的ISO是一个大文件,至少需要2分钟或2分钟。

我尝试将位置更改为常规路径,例如/home/kp/Desktop/folder。在这里,它可以使用空文件夹(仅结构)快速提取文件夹,文件夹上带有锁和叉号。查看图片

enter image description here

我不知道为什么会这样,我在USB挂载点和iso文件上尝试了chmod + x和777。仍然没有用。有什么理由以及如何解决它?

注意:我不只是提取iso文件,还只是提取要用于测试的文件。它将用于许多文件类型。这就是为什么我不建议使用Loopy或java-iso-tools的原因。

编辑:我的代码很完美,问题出在我的thread上。我正在同时使用两个线程在usb棒上写入,这使usb成为资源!这就是为什么会出错。很抱歉浪费时间!我的代码很完美,只有我玩过白痴游戏。

0 个答案:

没有答案