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
}
}