繁体   English   中英

尝试使用Java程序压缩文件夹,但出现错误-访问被拒绝

[英]Trying to zip a folder using java program but Error - Access Denied

    //program to zip a file

    // Exception in thread "main" java.io.FileNotFoundException: C:\zipde (Access is denied)
    //at java.io.FileOutputStream.open0(Native Method)
    //at java.io.FileOutputStream.open(FileOutputStream.java:270)
    //at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    //at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
    //at ZipUtility.pack(ZipUtility.java:26)
    //at ZipUtility.main(ZipUtility.java:19)

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;

    public class ZipUtility {

        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub

            Path p1 = Paths.get("C:\\zipdemo");
            Path p2 = Paths.get("C:\\zipde");
            pack(p1, p2);


        }

        public static void pack(final Path folder, final Path zipFilePath) throws IOException {
            try (
                    FileOutputStream fos = new FileOutputStream(zipFilePath.toFile());
                    ZipOutputStream zos = new ZipOutputStream(fos)
                    ) {
                Files.walkFileTree(folder, new SimpleFileVisitor<Path>() {
                    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                        zos.putNextEntry(new ZipEntry(folder.relativize(file).toString()));
                        Files.copy(file, zos);
                        zos.closeEntry();
                        return FileVisitResult.CONTINUE;
                    }

                    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
                        zos.putNextEntry(new ZipEntry(folder.relativize(dir).toString() + "/"));
                        zos.closeEntry();
                        return FileVisitResult.CONTINUE;
                    }
                });
            }
        }

    }

当您尝试访问目录而不是文件时,此异常通常发生在流中。 FileOutputStream的参数应为“文件/路径”。 有关更多详细信息,请参见http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM