集册 Java实例教程 递归添加到邮政编码

递归添加到邮政编码

欢马劈雪     最近更新时间:2020-01-02 10:19:05

573
递归添加到邮政编码


//package com.nowjava;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;/*来 自 时 代 J a v a - nowjava.com*/

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;


import java.util.zip.ZipEntry;


import java.util.zip.ZipOutputStream;


public class Main {

    public static void recursiveAddToZip(File source, File zipFile,// from 时代Java公众号

            String pathInZip) throws IOException {

        recursiveAddToZip(new File[] { source }, zipFile, pathInZip);

    }


    public static void recursiveAddToZip(File[] files, File zipFile,

            String pathInZip) throws IOException {

        FileOutputStream fOut = null;

        ZipOutputStream zipOut = null;


        try {

            fOut = new FileOutputStream(zipFile);

            zipOut = new ZipOutputStream(fOut);


            for (File f : files) {

                recursiveAddToZip(f, zipOut, pathInZip);

            }

        } finally {

            if (zipOut != null)

                zipOut.close();

            else if (fOut != null)

                fOut.close();

        }

    }


    private static void recursiveAddToZip(File source,

            ZipOutputStream zipOut, String pathInZip) throws IOException {

        if (source.isDirectory()) {

            if (pathInZip.equals(""))

                pathInZip = source.getName();

            else

                pathInZip = pathInZip + "/" + source.getName();

            //         System.out.println("Recursing into " + source + " with path " + pathInZip);

            // Recurse

            for (File f : source.listFiles()) {

                recursiveAddToZip(f, zipOut, pathInZip);

            }

        } else if (source.isFile()) {

            //         System.out.println("Adding " + source.toString() + " to " + 

            //               zipFile.toString());

            addToZip(zipOut, source, pathInZip);

        }

    }


    public static void addToZip(File zipFile, File source, String pathInZip)

            throws IOException {

        addToZip(zipFile, new File[] { source }, pathInZip);

    }


    /**

     * Adds the given file to the given zip file.

     * @param zipFile the zip file to add to

     * @param files file to add

     */

    public static void addToZip(File zipFile, File[] files, String pathInZip)

            throws IOException {

        FileOutputStream fOut = null;

        ZipOutputStream zipOut = null;


        try {

            fOut = new FileOutputStream(zipFile);

            zipOut = new ZipOutputStream(fOut);


            for (File f : files) {

                addToZip(zipOut, f, pathInZip);

            }

        } finally {

            if (zipOut != null)

                zipOut.close();

            else if (fOut != null)

                fOut.close();

        }

    }


    private static void addToZip(ZipOutputStream zipOut, File source,

            String pathInZip) throws IOException {

        BufferedOutputStream out = null;


        FileInputStream fIn = null;

        BufferedInputStream in = null;


        final int bufSize = 512;

        try {

            // Open our streams

            fIn = new FileInputStream(source);

            in = new BufferedInputStream(fIn, bufSize);


            String filePathInZip = pathInZip + "/" + source.getName();

            if (pathInZip.equals(""))

                filePathInZip = source.getName();


            //         System.out.println("Adding " + filePathInZip);

            ZipEntry entry = new ZipEntry(filePathInZip);

            zipOut.putNextEntry(entry);


            out = 
展开阅读全文