//输出代码
public void priviewCode(String codePath) {
    List<String> paths= traverseFolder1(codePath);
    for(String path:paths){
        File file=new File(path);
        if(file.isFile()){
            try {//读取指定文件路径下的文件内容
                String fileDatas = readFile(file);
                System.out.println(fileDatas);
}
public static List<String> traverseFolder1(String path) {
    List<String> paths=new ArrayList<>();
    int fileNum = 0, folderNum = 0;
    File file = new File(path);
    if (file.exists()) {
        LinkedList<File> list = new LinkedList<File>();
        File[] files = file.listFiles();
        for (File file2 : files) {
            if (file2.isDirectory()) {
                System.out.println("文件夹:" + file2.getAbsolutePath());
//                    paths.add(file2.getAbsolutePath());
                list.add(file2);
                folderNum++;
            } else {
                System.out.println("文件:" + file2.getAbsolutePath());
                paths.add(file2.getAbsolutePath());
                fileNum++;
            }
        }
        File temp_file;
        while (!list.isEmpty()) {
            temp_file = list.removeFirst();
            files = temp_file.listFiles();
            for (File file2 : files) {
                if (file2.isDirectory()) {
                    System.out.println("文件夹:" + file2.getAbsolutePath());
//                        paths.add(file2.getAbsolutePath());
                    list.add(file2);
                    folderNum++;
                } else {
                    System.out.println("文件:" + file2.getAbsolutePath());
                    paths.add(file2.getAbsolutePath());
                    fileNum++;
                }
            }
        }
    } else {
        System.out.println("文件不存在!");
    }
    System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);
return paths;
}
/**
 * 获取某文件夹下的文件名和文件内容,存入map集合中
 * @param filePath 需要获取的文件的 路径
 * @return 返回存储文件名和文件内容的map集合
 */
public static Map<String, String> getFilesDatas(String filePath){
    Map<String, String> files = new HashMap<>();
    File file = new File(filePath); //需要获取的文件的路径
    String[] fileNameLists = file.list(); //存储文件名的String数组
    File[] filePathLists = file.listFiles(); //存储文件路径的String数组
    for(int i=0;i<filePathLists.length;i++){
        if(filePathLists[i].isFile()){
            try {//读取指定文件路径下的文件内容
                String fileDatas = readFile(filePathLists[i]);
                //把文件名作为key,文件内容为value 存储在map中
                files.put(fileNameLists[i], fileDatas);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return files;
}
/**
 * 读取指定目录下的文件
 * @param path 文件的路径
 * @return 文件内容
 * @throws IOException
 */
public static String readFile(File path) throws IOException{
    //创建一个输入流对象
    InputStream is = new FileInputStream(path);
    //定义一个缓冲区
    byte[] bytes = new byte[1024];// 1kb
    //通过输入流使用read方法读取数据
    int len = is.read(bytes);
    //System.out.println("字节数:"+len);
    String str ;
    StringBuilder stringBuilder = new StringBuilder();
    while(len!=-1){
        //把数据转换为字符串
        str = new String(bytes, 0, len);
        stringBuilder.append(str);
//            System.out.println(str);
        //继续进行读取
        len = is.read(bytes);
    }
    //释放资源
    is.close();
    return stringBuilder.toString();
}

参考:
https://www.cnblogs.com/azhqiang/p/4596793.html
https://blog.csdn.net/yangyang975/article/details/108312789

最后修改:2020 年 11 月 14 日 09 : 06 PM