C#获取某一路径下的所有文件名信息(包括子文件夹)
前言:初步梳理记录,以后慢慢总结更多的方法...
方法一:
Dicrectory类中的:public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption);
- path-获取文件的路径;
- searchPattern-要获取的包含的文件标记,使用"."可表示所有文件类型;
- searchaOption是一个枚举,SearchOption.AllDirectories表示获取当前目录及所有子目录;
获取的结果包含完整路径,处理下即可:
Directory.GetFiles("filePath", ".", SearchOption.AllDirectories);
方法二:使用自定义循环读取某一路径下所有的文件:
贴代码了,这里使用的是C#控制台输出文件名到记事本中,文件名使用逗号隔开:
using System;
using System.IO;
namespace ConsoleApplication1 {
class Program {
public static string FileName = "";
public static void Main(string[] args) {
bool isContinute = true;
WriteMessage("结束程序请输入1");
WriteMessage("请输入要获取文件名的路径:");
string path = Console.ReadLine();
do {
if (string.IsNullOrEmpty(path)) {
WriteMessage("路径不存在!请重新输入");
} else {
DirectoryInfo dir = new DirectoryInfo(path);
if (dir.Exists == false) {
WriteMessage("路径不存在!请重新输入");
} else {
FileName = "";
GetChildDicsName(dir);
WriteMessage(FileName);
Console.WriteLine("获取该路径下文件名成功!你可以继续输入新的路径");
}
}
path = Console.ReadLine();
isContinute = path != "1";
} while (isContinute);
}
public static DirectoryInfo[] GetChildDicsName(DirectoryInfo dir) {
FileInfo[] fileArray = dir.GetFiles();
DirectoryInfo[] childDirs = dir.GetDirectories();
foreach (FileInfo file in fileArray) {
FileName += file.Name + ",";
}
if (childDirs.Length > 0) {
foreach (DirectoryInfo dirChild in childDirs) {
GetChildDicsName(dirChild);
}
}
return childDirs;
}
public static void WriteMessage(string message) {
Console.WriteLine(message);
//File.Create(@"C:\Users\Public\Desktop\test.txt");
FileStream fs = File.Open(@"C:\Users\Public\Desktop\test.txt", FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(message); //这里是写入的内容
sw.Close();
fs.Close();
}
}
}
控制台信息截图:
*感谢您的阅读。喜欢的、有用的就请大哥大嫂们高抬贵手“推荐一下”吧!你的精神 支持是博主强大的写作动力。欢迎转载!
*博主的文章是自己平时开发总结的经验,由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
*我的博客: http://www.cnblogs.com/lxhbky/
【C#】C#获取文件夹下的所有文件
#基础知识
1、获得当前运行程序的路径
1 string rootPath = Directory.GetCurrentDirectory();
2、获得该文件夹下的文件,返回类型为FileInfo
1 string path=@"X:\XXX\XX"; 2 DirectoryInfo root = new DirectoryInfo(path); 3 FileInfo[] files=root.GetFiles();
3、获得该文件夹下的子目录,返回类型为DirectoryInfo
1 string path=@"X:\XXX\XX"; 2 DirectoryInfo root = new DirectoryInfo(path); 3 DirctoryInfo[] dics=root.GetDirectories();
4、获得文件夹名
1 string path=@"X:\XXX\XX"; 2 DirectoryInfo root = new DirectoryInfo(path); 3 string dicName=root.Name;
5、获得文件夹完整的路径名
1 string path=@"X:\XXX\XX"; 2 DirectoryInfo root = new DirectoryInfo(path); 3 string dicName=root.FullName;
6、获取文件的Name和FullName
1 string path=@"X:\XXX\XX"; 2 DirectoryInfo root = new DirectoryInfo(path); 3 foreach (FileInfo f in root.GetFiles()) 4 { 5 string name=f.Name; 6 string fullName=f.FullName; 7 }
#只获取目录下一级的文件夹与文件
1 String path = @"X:\xxx\xxx"; 2 3 //第一种方法 4 string[] files = Directory.GetFiles(path, "*.txt"); 5 6 foreach (string file in files) 7 { 8 Console.WriteLine(file); 9 } 10 11 //第二种方法 12 DirectoryInfo folder = new DirectoryInfo(path); 13 14 foreach (FileInfo file in folder.GetFiles("*.txt")) 15 { 16 Console.WriteLine(file.FullName); 17 }
# 递归地输出当前运行程序所在的磁盘下的所有文件名和子目录名
1 static void Main(string[] args) 2 { 3 //获取当前程序所在的文件路径 4 String rootPath = Directory.GetCurrentDirectory(); 5 string parentPath = Directory.GetParent(rootPath).FullName;//上级目录 6 string topPath = Directory.GetParent(parentPath).FullName;//上上级目录 7 StreamWriter sw = null; 8 try 9 { 10 //创建输出流,将得到文件名子目录名保存到txt中 11 sw = new StreamWriter(new FileStream("fileList.txt", FileMode.Append)); 12 sw.WriteLine("根目录:" + topPath); 13 getDirectory(sw, topPath, 2); 14 } 15 catch (IOException e) 16 { 17 Console.WriteLine(e.Message); 18 } 19 finally 20 { 21 if (sw != null) 22 { 23 sw.Close(); 24 Console.WriteLine("完成"); 25 } 26 } 27 28 } 29 30 /// <summary> 31 /// 获得指定路径下所有文件名 32 /// </summary> 33 /// <param name="sw">文件写入流</param> 34 /// <param name="path">文件写入流</param> 35 /// <param name="indent">输出时的缩进量</param> 36 public static void getFileName(StreamWriter sw, string path, int indent) 37 { 38 DirectoryInfo root = new DirectoryInfo(path); 39 foreach (FileInfo f in root.GetFiles()) 40 { 41 for (int i = 0; i < indent; i++) 42 { 43 sw.Write(" "); 44 } 45 sw.WriteLine(f.Name); 46 } 47 } 48 49 /// <summary> 50 /// 获得指定路径下所有子目录名 51 /// </summary> 52 /// <param name="sw">文件写入流</param> 53 /// <param name="path">文件夹路径</param> 54 /// <param name="indent">输出时的缩进量</param> 55 public static void getDirectory(StreamWriter sw, string path, int indent) 56 { 57 getFileName(sw, path, indent); 58 DirectoryInfo root = new DirectoryInfo(path); 59 foreach (DirectoryInfo d in root.GetDirectories()) 60 { 61 for (int i = 0; i < indent; i++) 62 { 63 sw.Write(" "); 64 } 65 sw.WriteLine("文件夹:" + d.Name); 66 getDirectory(sw, d.FullName, indent + 2); 67 sw.WriteLine(); 68 } 69 }