C# 如何獲取指定目錄包含的文件和子目錄
來(lái)源:易賢網(wǎng) 閱讀:13564 次 日期:2014-08-29 10:38:24
溫馨提示:易賢網(wǎng)小編為您整理了“C# 如何獲取指定目錄包含的文件和子目錄”,方便廣大網(wǎng)友查閱!

如何獲取指定目錄包含的文件和子目錄

1. DirectoryInfo.GetFiles():獲取目錄中(不包含子目錄)的文件,返回類型為FileInfo[],支持通配符查找;

2. DirectoryInfo.GetDirectories():獲取目錄(不包含子目錄)的子目錄,返回類型為DirectoryInfo[],支持通配符查找;

3. DirectoryInfo. GetFileSystemInfos():獲取指定目錄下(不包含子目錄)的文件和子目錄,返回類型為FileSystemInfo[],支持通配符查找;

如何獲取指定文件的基本信息;

FileInfo.Exists:獲取指定文件是否存在;

FileInfo.Name,F(xiàn)ileInfo.Extensioin:獲取文件的名稱和擴(kuò)展名;

FileInfo.FullName:獲取文件的全限定名稱(完整路徑);

FileInfo.Directory:獲取文件所在目錄,返回類型為DirectoryInfo;

FileInfo.DirectoryName:獲取文件所在目錄的路徑(完整路徑);

FileInfo.Length:獲取文件的大小(字節(jié)數(shù));

FileInfo.IsReadOnly:獲取文件是否只讀;

FileInfo.Attributes:獲取或設(shè)置指定文件的屬性,返回類型為FileAttributes枚舉,可以是多個(gè)值的組合

FileInfo.CreationTime、FileInfo.LastAccessTime、FileInfo.LastWriteTime:分別用于獲取文件的創(chuàng)建時(shí)間、訪問(wèn)時(shí)間、修改時(shí)間;

---------------------------------

遍歷文件夾

文件夾是樹(shù)形結(jié)構(gòu),遍歷算法有:廣度優(yōu)先級(jí)和深度優(yōu)先級(jí)。

區(qū)別:廣度首先查找同一層目錄,深度首先遍歷一條分支;有了這個(gè)區(qū)別,就可以確定鏈表的插入位置,即廣度遍歷插入點(diǎn)總在末尾;深度遍歷插入點(diǎn)在首部。詳細(xì)看代碼。

public static void searchFile(String path, List<Object> resultList) {

File file = new File(path);

if (file.isDirectory()) {

LinkedList<File[]> levelLinked = new LinkedList<File[]>();

levelLinked.add(file.listFiles());

do {

File[] childFiles = levelLinked.remove(0);

for (File cf : childFiles) {

if (cf.isDirectory()) {

// 此處控制遍歷的方向

levelLinked.add(cf.listFiles());// 廣度

// levelLinked.add(0, cf.listFiles());//深度

} else {

String fileName = cf.getName();// 文件名,有后綴

String filePath = cf.getAbsolutePath();// 絕對(duì)路徑

String fileParent = cf.getParent();// 上層路徑,注意最后的'/'

// 比較算法,找到后放入集合

String[] sf = { fileName, fileParent, filePath };

resultList.add(sf);

}

}

} while (levelLinked.size() > 0);

}

}

此處加入一些API提供的工具類,希望有用。

1.多后綴判斷,如.java、.class、.js等

String[] hz = {java,class,js};

Arrays.sort(hz);//下面的搜索需要排序,例如,class的順序在java之前,如果不sort(),class文件不會(huì)被查找

Arrays.binarySearch(hz, fn_);//fn_文件后綴

如果明確目錄的層次結(jié)構(gòu)簡(jiǎn)單,遞歸算法也是不錯(cuò)的選擇。

個(gè)人覺(jué)得,文件的搜索,應(yīng)該單獨(dú)起線程。

////////////////////////

采用遞歸的方式遍歷,文件夾和子文件中的所有文件。

public void FindFile(string dirPath) //參數(shù)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);

}

}

用下面代碼限制文件的類型:

foreach(FileInfo f in Dir.GetFiles("*.---")) //查找文件

“*.---”指要訪問(wèn)的文件的類型的擴(kuò)展名

///////////////////////////////

代碼改成如下,會(huì)不會(huì)好一點(diǎn)

DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);

DirectoryInfo[] dirInfo = TheFolder.GetDirectories();

//遍歷文件夾

foreach(DirectoryInfo NextFolder in dirInfo)

this.listBox1.Items.Add(NextFolder.Name);

FileInfo[] fileInfo = TheFolder.GetFiles();

//遍歷文件

foreach(FileInfo Next...

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:C# 如何獲取指定目錄包含的文件和子目錄
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)