using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsFormsApplication1獲取目錄下文件 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //獲取目錄下指定類型的文件集合 String path = @"../../Views"; //第一種方法 var files = Directory.GetFiles(path, "*.txt"); foreach (var file in files) { Console.WriteLine(file); //輸出的路徑+名稱 } //第二種方法 DirectoryInfo folder = new DirectoryInfo(path);//目錄信息 foreach (FileInfo file in folder.GetFiles("*.txt")) { Console.WriteLine(file.FullName); //獲取每個文件的所有信息 } //C#遍歷指定文件夾中的所有文件 DirectoryInfo TheFolder = new DirectoryInfo(path); //遍歷文件夾 foreach (DirectoryInfo NextFolder in TheFolder.GetDirectories()) { //this.listBox1.Items.Add(NextFolder.Name); } //遍歷文件 foreach (FileInfo NextFile in TheFolder.GetFiles()) { //this.listBox2.Items.Add(NextFile.Name); } } public void FindFile(string dirPath) //參數dirPath為指定的目錄 { //在指定目錄及子目錄下查找文件,在listBox1中列出子目錄及文件 DirectoryInfo Dir = new DirectoryInfo(dirPath); try { foreach (DirectoryInfo d in Dir.GetDirectories())//查找子目錄 { FindFile(Dir + d.ToString() + "\\"); //listBox1.Items.Add(Dir+d.ToString()+"\"); //listBox1中填加目錄名 } foreach (FileInfo f in Dir.GetFiles("*.---")) //查找文件 { //listBox1.Items.Add(Dir+f.ToString()); //listBox1中填加文件名 } } catch (Exception e) { MessageBox.Show(e.Message); } } public void ListFiles(FileSystemInfo info) ////文件系統信息 參數為目錄 { if (info.Exists != true) return; //不存在就返回 DirectoryInfo dir = info as DirectoryInfo; //這句是否多余??? if (dir == null) return; //是否是目錄類型 FileSystemInfo[] files = dir.GetFileSystemInfos(); //返回文件目錄和所有文件 for (int i = 0; i < files.Length; i++) { FileInfo file = files[i] as FileInfo; if (file != null) //是文件 { if (file.Extension.Contains("cshtml")) { this.dataGridView1.Rows.Add(file.Name, file.Length);//文件名和大小 } Console.WriteLine(file.FullName + "\t " + file.Length); //輸出完整目錄和大小 } //對於子目錄,進行遞歸調用 else //不是文件,是目錄 { ListFiles(files[i]); // 遞歸 } } } private void button2_Click(object sender, EventArgs e) { #region --清空dataGridView //清空方法1 DataTable dt = (DataTable)dataGridView1.DataSource; if (dt != null && dt.Rows.Count > 0) { dt.Columns.Clear(); dt.Rows.Clear(); dataGridView1.DataSource = dt; } //清空方法2 dataGridView1.Columns.Clear(); dataGridView1.Rows.Clear(); #endregion #region --添加列 this.dataGridView1.Columns.Add("0", "文件路徑");//添加列 this.dataGridView1.Columns.Add("0", "文件大小"); this.dataGridView1.Columns.Add("0", "是否存在"); #endregion #region --添加行並設置值, this.dataGridView1.Rows.Add("第一個字段值", "第二個字段值", "第三個字段值");//添加一行數據 dataGridView1.Rows[0].Cells[0].Value = "00000000"; dataGridView1.Rows[0].Cells[1].Value = "11111111"; dataGridView1.Rows[0].Cells[2].Value = "22222222"; //或者 //循環添加行並設置值 for (int i = 1; i <= 6; i++) { int index = this.dataGridView1.Rows.Add(); //添加行 this.dataGridView1.Rows[index].Cells[0].Value = i; //設置值 } #endregion ////測試按鈕 #region --遍歷目錄文件到列表中 DirectoryInfo folder = new DirectoryInfo("../../Views");//目錄信息 ListFiles(folder); #endregion this.dataGridView1.Rows.Add("第一個字段值", "第二個字段值");//未傳參默認為空值. //-- } private void Form1_Load(object sender, EventArgs e) { dataGridView1.ReadOnly = true;//只讀屬性 dataGridView1.AllowUserToAddRows = false; //不顯示出dataGridView1的最后一行空白 } List<string> resuls = new List<string>(); private void button3_Click(object sender, EventArgs e) { //獲得目錄下所有文件 ,並循環讀取內容, var files = Directory.GetFiles(@"F:\新建文件夾\20180817"); for (int i = 0; i < files.Length;i++ ) { var array = File.ReadAllLines(files[i], Encoding.GetEncoding("gb2312")); //打開一個文本文件,讀取文件的所有行,然后關閉該文件。 string result = string.Join("\r\n", array);//array為數組 if (result.Contains("xxx")) { resuls.Add(files[i]); var path = Application.StartupPath; //\bin\Debug System.IO.DirectoryInfo topDir = System.IO.Directory.GetParent(System.Environment.CurrentDirectory); var path1 = topDir.FullName; //文件\bin. if (Directory.Exists(path1+"\\temp") == false)//如果不存 就創建, { Directory.CreateDirectory(path1 + "\\temp"); } if (File.Exists(files[i]))//必須判斷要復制的文件是否存在 { File.Copy(files[i], path1 + "\\temp\\" + Path.GetFileName(files[i]), true);//三個參數分別是源文件路徑,存儲路徑,若存儲路徑有相同文件是否替換 } } } //重復的csv名稱,讀取后,歸類, 上傳 MessageBox.Show("完成"); } /// <summary> /// 復制文件夾中的所有內容 /// </summary> /// <param name="sourceDirPath">源文件夾目錄</param> /// <param name="saveDirPath">指定文件夾目錄</param> public void CopyDirectory(string sourceDirPath, string saveDirPath) { try { if (!Directory.Exists(saveDirPath)) //判斷路徑是否存在 { Directory.CreateDirectory(saveDirPath);//不存在 創建 } string[] files = Directory.GetFiles(sourceDirPath);//返回指定路徑下的所有文件 foreach (string file in files) { string pFilePath = saveDirPath + "\\" + Path.GetFileName(file); if (File.Exists(pFilePath))//文件是否存在 continue; File.Copy(file, pFilePath, true);//復制文件 } string[] dirs = Directory.GetDirectories(sourceDirPath);//返回指定目錄下的子文件夾 foreach (string dir in dirs) { CopyDirectory(dir, saveDirPath + "\\" + Path.GetFileName(dir)); //GetFileName獲得文件夾名稱 } } catch (Exception ex) { //if (File.Exists(pLocalFilePath))//必須判斷要復制的文件是否存在 //{ // File.Copy(pLocalFilePath, pSaveFilePath, true);//三個參數分別是源文件路徑,存儲路徑,若存儲路徑有相同文件是否替換 //} } } } }