要實(shí)現讀取文件夾下所有文件信息,其實(shí)只要用個(gè)遞歸方法就可以簡(jiǎn)單實(shí)現了
下面為自定義的一個(gè)類(lèi)其中的showEveryFile方法就是為讀取給定文件夾下每一個(gè)文件
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace showFile
{
class showfileCls
{
public static void showErveryFile(string strFolderPath,ListViewlstView)//定義靜態(tài)的函數
{
try
{
DirectoryInfo di = new DirectoryInfo(strFolderPath);//把文件夾定義為DirectoryInfo形式
FileSystemInfo[] fsinfo = di.GetFileSystemInfos();//獲取此文件夾中的文件和文件夾的信息,返回一FileSystemInfo格式的數組
foreach (FileSystemInfo fs in fsinfo)//遍歷數組
{
if (fs is FileInfo)//如果遍歷到的為一文件
{
lstView.Items.Add(fs .FullName);
lstView.Items[lstView.Items.Count -1].SubItems.Add(fs.Name.Remove (fs.Name .LastIndexOf ('.'),fs.Extension.Length ));
lstView.Items[lstView.Items.Count -1].SubItems.Add(fs.Extension );
lstView.Items[lstView.Items.Count -1].SubItems.Add(fs.CreationTime.ToShortDateString());
}
if (fs is DirectoryInfo)//如果遍歷到的為文件夾
{
showErveryFile(fs.FullName, lstView);//遞歸方法
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"友情提示" );
}
}
}
}
定義了這個(gè)類(lèi)之后就可以在按鈕的Click事件中添加代碼了
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace showFile
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static bool boolSort = true;//全局的靜態(tài)變量,用來(lái)設置點(diǎn)擊列時(shí)候的排序方式
private void Form1_Load(object sender, EventArgs e)
{
listView1.View = View.Details;//顯示詳細信息,這句很重要?。?!
listView1.AllowColumnReorder = true;//允許排列列的順序
listView1.FullRowSelect = true;//允許整行選擇
listView1.GridLines = true;//設置網(wǎng)格線(xiàn)
listView1.Sorting = SortOrder.Ascending;//設置排序為正序排序
//為列設置屬性值
listView1.Columns.Add("文件路徑",100,HorizontalAlignment.Left);
listView1.Columns.Add("文件名",100, HorizontalAlignment.Left);
listView1.Columns.Add("文件格式",100, HorizontalAlignment.Left);
listView1.Columns.Add("創(chuàng )建時(shí)間",100, HorizontalAlignment.Left);
}
private void btnBrowse_Click(object sender, EventArgs e)
{
string strPath = "";//文件路徑
if (folderBrowserDialog1.ShowDialog() ==DialogResult.OK)//如果選擇了一路徑,并且單擊了“確定”按鈕
{
listView1.Items.Clear();//首先清空列表中的內容
strPath = folderBrowserDialog1.SelectedPath;//獲取選擇的文件路徑名
txtPath.Text = strPath;//把文件路徑在textbox中顯示
showfileCls.showErveryFile(strPath, listView1);//由于定義的為靜態(tài)函數,故不用實(shí)例化類(lèi)
}
}
private void listView1_ColumnClick(object sender,ColumnClickEventArgs e)
{
boolSort = !boolSort;//對此變量取反,以便每點(diǎn)擊一次就按不同的方式排序
if (boolSort)
{
listView1.Sorting = SortOrder.Ascending;//正序
}
else
{
listView1.Sorting = SortOrder.Descending;//倒序
}
}
}
}
最后的生成效果如圖:
由圖可知,系統不但顯示了MathType文件夾根目錄下的文件,還顯示了其子文件夾Fonts及孫文件夾PostScript下的文件。

聯(lián)系客服