有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java FSReadOnlyChiveFileSystem异常

嗨,我正在尝试使用TrueZIP解压文件,在解压过程中,我遇到了一个异常

de.schlichtherle.truezip.fs.archive.FsReadOnlyArchiveFileSystemException: This is a read-only archive file system!

它对某些文件有效,对其他文件抛出异常

因此,我尝试更改权限并使其可写,但这也不起作用

这是我的密码:

public void unzipFiles(TFile[] files){
    try{
        for(int i=0; i < files.length; i++){
            System.out.println("Processing please wait ...");
            if(files[i].isArchive()){
                if(files[i].getName().endsWith(".zip")){
                    System.out.println(files[i].getName());
                    System.out.println("Is writable "+files[i].canWrite());
                    //change the file permission to be writable
                    if(files[i].canWrite() == false){
                        files[i].setWritable(true);
                        files[i].setExecutable(true);
                        System.out.println("After setting it writeable "+files[i].canWrite());
                    }
                    String filename = files[i].getName();
                    String pathToExtract = files[i].getParent() + "\\" + filename.substring(0, filename.lastIndexOf("."));
                    File createdirectory = new File(pathToExtract);

                    TFile directoryToExtract = new TFile(pathToExtract);
                    TFile.cp_rp(files[i], directoryToExtract, TArchiveDetector.NULL, TArchiveDetector.NULL);
                    System.out.println("Unzipping files ..");
                    TFile.rm_r(files[i]);
                    System.out.println("Deleting Zip file..");
                    numOfZips = numOfZips + 1;
                    unzipFiles(directoryToExtract.listFiles());
                }
            }else{
                if(files[i].isDirectory()){
                    unzipFiles(files[i].listFiles());
                }
            }
        }
    }catch(Exception e){
        e.printStackTrace();
    }

有人能帮忙吗

谢谢


共 (1) 个答案

  1. # 1 楼答案

    请注意,TrueZIP不支持权限。所以setWritablesetExecutable是在归档文件中唯一没有被覆盖而具有意义的方法。如果您检查了它们的布尔返回值,您就会发现,如果file对象正在对存档文件中的条目进行寻址,那么它们将返回false

    除此之外,我不知道在哪里可以修改归档文件,因此我无法评论如何获得FsReadOnlyArchiveFileSystemException。如果您试图修改只读存档文件系统(即,如果存档文件是只读的),通常会引发此错误

    如果您提供一个堆栈跟踪,那么很明显为什么会发生这种情况