集册 Java实例教程 按文件扫描软件包名称

按文件扫描软件包名称

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

478
按文件扫描软件包名称

/*

 * Copyright Bruce Liang (ldcsaa@gmail.com)

 *

 * Version   : JessMA 3.5.1

 * Author   : Bruce Liang

 * Website   : http://www.jessma.org

 * Project   : http://www.oschina.net/p/portal-basic

 * Blog      : http://www.cnblogs.com/ldcsaa

 * WeiBo   : http://weibo.com/u/1402935851

 * QQ Group   : 75375912

 *

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *      http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

import java.io.File;

import java.io.FileFilter;
/**
来 自 时代Java - N o w  J a v a . c o m
**/

import java.io.IOException;

import java.net.JarURLConnection;

import java.net.URL;

import java.util.Arrays;

import java.util.Enumeration;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

import java.util.jar.JarEntry;

import java.util.jar.JarFile;
/*来自 
 时   代    Java - nowjava.com*/

import java.util.regex.Pattern;


public class Main{

    private static final char PACKAGE_SEP_CHAR = '.';

    private static final char PATH_SEP_CHAR = '/';

    private static final String PATH_SEP_STR = "/";

    

    public static final void scanPackageNamesByFile(String filePath,

            int packageStartIndex, Set<String> names) {

        scanPackageNamesByFile(filePath, packageStartIndex, null, names);

    }

    

    public static final void scanPackageNamesByFile(String filePath,

            int packageStartIndex, PackageFilter filter, Set<String> names) {

        if (filePath.endsWith(PATH_SEP_STR))

            filePath = filePath.substring(0, filePath.length() - 1);

        if (packageStartIndex > filePath.length())

            packageStartIndex = filePath.length();


        final String basePackagePath = filePath

                .substring(packageStartIndex);


        File dir = new File(filePath);

        File[] files = dir.listFiles(new FileFilter() {

            @Override

            public boolean accept(File file) {

                if (file.isDirectory())

                    return true;


                return false;

            }

        });


        for (File file : files) {

            String name = file.getName();

            String packageName = name;


            
展开阅读全文