当前位置: 首页 > 知识库问答 >
问题:

试图使用java程序压缩文件夹,但错误访问被拒绝

汪鸿波
2023-03-14
    //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;
                    }
                });
            }
        }

    }

共有1个答案

江飞白
2023-03-14

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

 类似资料:
  • 首先,我没有看到任何其他问题可以“直接”帮助我解决问题,这就是为什么我决定创建一个新的问题。 以下代码被编程为解压缩多个文件和文件夹。 这段代码工作正常,但有一个重要的错误:它解压缩文件夹,但不是像这样显示它们: 文件1。txt 它显示了这一点: file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt 我做错了什么?

  • 问题内容: 我在FoxPro 6.0命令窗口中使用SQL命令,并遇到“文件访问被拒绝”。 我的SQL命令是: 情况: Windows 7专业版 FoxPro 6.0 main.dbf被共享给许多用户。 main.dbf不是 隐藏的 ,也不是 只写 任何意见将不胜感激! 问题答案: 此DBF文件位于共享驱动器上吗?如果是这样,则另一个用户可能使文件打开了“排他”,或者您正试图打开文件“排他”。默认状

  • 问题内容: 在某种程度上,当我尝试通过命令行访问MySQL时,已经设法解决了该错误: 我尝试使用此HowTo重置密码,但没有任何运气。 我已经卸载了mysql completley并重新安装了,但是仍然需要输入密码。我不知道为什么会这样! 有人可以帮我获得默认安装的MySQL吗? 环境 Fedora Core 10,完全根访问权限,安装了Apache和PHP 感谢您的任何帮助!! 编辑 对于所有想

  • 我最近才更新到新版本的forge,没有改变我的设置,当我去构建我的应用程序时,我得到了一个错误,说它找不到文件…

  • 这个问题已经问过好几次了,但没有一个解决办法对我有效。我以管理员身份运行DOS命令窗口,但当运行keytool命令安装证书时,我得到了上面的错误: 我在Windows10上使用JDK 1.8.0_191。为什么拒绝对管理员的访问?

  • 问题内容: 假设我具有以下目录结构。 一月份内部有两个excel文件,分别是A.xls和B.xls。在很多地方,都有关于如何使用zip文件进行压缩的文章。但是,我要压缩的文件夹一月自身内部报告文件夹,这样既 月份 和 january.zip 将出席内部报告。( 这意味着当我解压缩january.zip文件时,我应该得到january文件夹 )。 谁能给我提供使用进行此操作的代码。请让我知道通过使用