NIO2では、zipファイルを仮想ファイルシスムとして扱えるので、Files.walkFileTreeでzip内のファイルだけを対象にした処理を簡単に実装できる。
// zipのダウンロード String url = "http://www.post.japanpost.jp/zipcode/dl/oogaki/zip/10gumma.zip"; final Path zip = Paths.get("10gumma.zip"); try (InputStream stream = new URL(url).openStream()) { Files.copy(stream, zip, StandardCopyOption.REPLACE_EXISTING); } // zip内のcsvデータを標準出力に出力 try (FileSystem fileSystem = FileSystems.newFileSystem(zip, null)) { Files.walkFileTree(fileSystem.getPath("/"), new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { try (BufferedReader reader = Files.newBufferedReader(file, Charset.forName("windows-31j"))) { reader.lines().forEach(System.out::println); } return FileVisitResult.CONTINUE; } }); }