本文引自博客園
作者:柴亮
原文鏈接:文件及文件夾操作- File類裆蒸、Directory 類、FileInfo 類糖驴、DirectoryInfo 類
文件及文件夾操作:
C/S:WinForm可以操作客戶端文件 Client Server
B/S:Brower Server
命名空間:using system .IO;
1. File類:
創(chuàng)建:File.Create(路徑);創(chuàng)建文件,返回FileStream
FileStream fs = File.Create(路徑)僚祷;之后需要關(guān)閉否則打不開,fs.close();
刪除:File.Delete(路徑);無返回值
復(fù)制文件:File.Copy(源文件贮缕,目標(biāo)文件);
剪切文件:File.Move(源文件路徑辙谜,目標(biāo)路徑);
判斷文件是否存在:File.Exists(路徑);返回布爾型,true代表已存在
文件加密:File.Encrypt();File.Decrypt();解密
File.GetCreationTime(路徑);獲取創(chuàng)建時間,返回DateTime類型 SetCreationTime(路徑感昼,DateTime類型);修改創(chuàng)建時間
File.GetLastAccessTime(路徑);最后訪問時間装哆,返回DateTime類型 SetLastAccessTime(路徑,DateTime類型);修改訪問時間
File.GetLastWriteTime(路徑);最后修改時間,返回DateTime類型 SetLastWriteTime(路徑蜕琴,DateTime類型);修改修改時間
2. Directory 類萍桌,目錄(文件夾)
Directory .CreateDirectory(路徑);創(chuàng)建目錄
Directory .Delete(路徑);刪除目錄
Directory .Exists(路徑);目錄是否存在
三個時間的get和set
Directory .GetDirectories(路徑); 獲取子目錄,返回string數(shù)組
Directory .GetFiles(路徑); 獲取子文件!名凌简!,返回string數(shù)組上炎,string[] s = Directory .GetFiles(路徑);
Directory .GetDirectoryRoot(路徑); 獲取根目錄
Directory .GetParent(路徑); 獲取上一級目錄
------------------------------------------------------------------------------------------------------
FileInfo 類
是實(shí)例方法,需要造對象new出來才能用号醉,上面的都是File的靜態(tài)方法
創(chuàng)建文件:FileInfo f = new FileInfo(路徑)反症; FileStream s = f.Create(); s.Close();
刪除文件:FileInfo f = new FileInfo(路徑); f.Delete();
復(fù)制文件:FileInfo f = new FileInfo(路徑)畔派; f.CopyTo(目標(biāo)路徑铅碍,是否覆蓋(true是覆蓋));
移動文件:FileInfo f = new FileInfo(路徑); f.MoveTo(目標(biāo)路徑);
文件是否存在:FileInfo f = new FileInfo(路徑)线椰; bool b = f.Exists;布爾型胞谈,是個屬性
獲取文件名:FileInfo f = new FileInfo(路徑);string s = f.FullName;屬性憨愉,帶路徑的文件名
獲得創(chuàng)建時間:DateTime d = f.CreationTime,三個時間都一樣烦绳,都是屬性
設(shè)置創(chuàng)建時間:f.CreationTime = DateTime.Now.AddDays(100); 三個都一樣
獲取文件大小:f.Length
DirectoryInfo 類
創(chuàng)建目錄:DirectoryInfo d = new DirectoryInfo(路徑); d.Create();
刪除目錄:d.Delete();
移動目錄:d.MoveTo(目標(biāo)路徑);
目錄是否存在:bool b = d.Exists;
獲得目錄全名:d.FullName;
獲得子文件配紫!對象信息>睹堋: FileInfo[] f = d.GetFiles(); 返回的是文件對象數(shù)組,內(nèi)容更詳細(xì),d.GetFiles("*.exe")只獲取exe的文件
獲得子目錄:DirectoryInfo[] dr = d.GetDirectories();
實(shí)例展示:讀取目錄大小
private long size = 0;
private long DirSize(string path)
{
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] f = d.GetFiles();
foreach (FileInfo wj in f)
{
size += wj.Length;
}
DirectoryInfo[] dr = d.GetDirectories();
if (dr.Count() > 0)
{
foreach (DirectoryInfo wjj in dr)
{
DirSize(wjj.FullName);
}
}
return size;
}
讀取目錄下面文件夾數(shù)量:
private int dcount = 0;
private int DirCount(string path)
{
DirectoryInfo d = new DirectoryInfo(path);
DirectoryInfo[] dr = d.GetDirectories();
if (dr.Count() > 0)
{
foreach (DirectoryInfo wjj in dr)
{
DirCount(wjj.FullName);
}
}
dcount += dr.Count();
return dcount;
}
讀取所有文件數(shù)量:
private int count=0;
private int FileCount(string path)
{
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] f = d.GetFiles();
DirectoryInfo[] dr = d.GetDirectories();
if (dr.Count() > 0)
{
foreach (DirectoryInfo wjj in dr)
{
FileCount(wjj.FullName);
}
}
count += f.Count();
return count;
}
利用遍歷集合查詢文件夾下所有文件數(shù)量躺孝,文件夾數(shù)量:
private int fcount = 0;
private int FileCount(string path)
{
//造文件夾信息對象
DirectoryInfo dwjj = new DirectoryInfo(path);
//取當(dāng)前文件夾下文件數(shù)量
fcount += dwjj.GetFiles().Length;
//取當(dāng)前目錄下所有文件夾
foreach (DirectoryInfo d in dwjj.GetDirectories())
{
FileCount(d.FullName);
}
return fcount;
}
private int dcount = 0;
private int DirCount(string path)
{
//造一個文件夾信息對象
DirectoryInfo d = new DirectoryInfo(path);
//取該目錄下所有文件夾
DirectoryInfo[] df = d.GetDirectories();
//累加文件夾數(shù)量
dcount += df.Length;
//遍歷所有文件夾
foreach (DirectoryInfo w in df)
{
DirCount(w.FullName);
}
return dcount;
}