递归获取指定文件夹下面的所有文件

2 篇文章 0 订阅

C# 版本

当文件数量超过一千后用时会很多,建议多线程操作
 /// <summary>
/// 获取路径下的所有的文件
 /// </summary>
 /// <param name="path">传入路径例如: D:</param>
 /// <returns></returns>
 private static List<FileInfo> GetFileNames(string path)
 {
     List<FileInfo> wavNames = new List<FileInfo>();
     DirectoryInfo dirInfo = new DirectoryInfo(path);
     FileInfo[] files = dirInfo.GetFiles();
     var dirs = dirInfo.GetDirectories();
     if (files.Count() > 0)
     {
         foreach (var item in files)
         {
             wavNames.Add(item);
         }
     }
     if (dirs.Count() > 0)
     {
         foreach (var dir in dirs)
         {
             foreach (var fullName in GetFileNames(dir.FullName))
             {
                 wavNames.Add(fullName);
             }
         }
     }
     return wavNames;
 }

Java版本

package ssss;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/***********************************************
 @作者: FW                                     
 @创建时间:2019年2月25日 下午4:23:25   				   
 @版本:v1.0       							   
 @描述:										   
***********************************************/
public class FileList {
 	public List<File> list;
	public static void main(String[] args) {
	
	FileList fList=new FileList();
	fList.list=new ArrayList<File>();
	String path="d:/6666666";
	
	fList.showFile(path);
	System.out.println(fList.list);	
	}

	private void showFile(String path) {
		File file=new File(path);
		File[] files2=file.listFiles();
		if (files2==null) {
			return;
		}
		for(int i=0;i<files2.length;i++){
			if(files2[i].isDirectory()){
				showFile(files2[i].getPath());
			}
			else
				list.add(files2[i]);
		}
	}
}

Golang版本

package main

import (
	"os"
	"fmt"
)

var ls []string

func main(){
	ls = make([]string,0)
	err :=  tree("dir",0)
	if err != nil{
		fmt.Println(err)
	}
	fmt.Println(ls)
}

func tree(dstPath string,level int)error{
	dstF,err := os.Open(dstPath)
	if err != nil{
		return err
	}
	defer dstF.Close()
	fileInfo,err := dstF.Stat()
	if err != nil{
		return err
	}
	if !fileInfo.IsDir() {
		ls = append(ls, dstPath)
		fmt.Println(dstPath)
		return nil
	}else {

		fmt.Println(dstF.Name())
		dir,err := dstF.Readdir(0)
		if err != nil{
			return err
		}
		for _,fileInfo = range dir{
			err = tree(dstPath+"\\"+fileInfo.Name(),level+1)
			if err != nil{
				return err
			}
		}
		return nil
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值