Path 對(duì)路徑 字符串進(jìn)行操作
獲得后綴
能合并路徑
獲取文件名
Directory和DirectoryInfo 對(duì)目錄進(jìn)行操作
判斷目錄是否存在
創(chuàng)建目錄
刪除目錄
獲取目錄下所有的子目錄
獲取目錄下所有的子文件
File和FileInfo 對(duì)文件進(jìn)行操作
讀文件
寫文件
追加文件
判斷文件是否存在
創(chuàng)建文件
刪除文件
1、Path類
復(fù)制代碼 代碼如下:
using System;
using System.IO;//目錄和文件操作的名稱空間
namespace _11_Path類 {
class Program {
static void Main(string[] args) {
string path = "c:\\abc\\1.txt" ;
//注意這里是對(duì)路徑字符串的操作 而不是真正的文件 “修改”支持字符串層面的,沒(méi)有真的給文件改名
path = Path.ChangeExtension(path, "avi" );//ChangeExtension()修改文件后綴名1.avi c:\\abc\\1.avi
//將兩個(gè)路徑合成一個(gè)路徑,比用+好,可以方便解決是不是加斜線的問(wèn)題,自動(dòng)處理路徑分隔符的問(wèn)題
path = Path.Combine("c:\\abc\\def\\" , "1.jpg"); //c:\abc\def\1.jpg
//得到文件所在文件夾的位置 同樣是從字符串的角度去處理
path = Path.GetDirectoryName(path);//c:\abc
path = Path.GetExtension(path);//擴(kuò)展名 .txt
path = Path.GetFileName(path);//文件名.后綴名 1.txt
path = Path.GetFileNameWithoutExtension(path);//不含后綴的文件名 1
path = Path.GetFullPath("11-Path類.exe" );//文件全路徑(相對(duì)文件的全路徑 一般也不用此方法) F:\PIZIYIMAO\11-Path類\bin\Debug\11-Path類.exe
path = Path.GetTempFileName();//臨時(shí)文件夾保存路徑 自動(dòng)創(chuàng)建文件 C:\Documents and Settings\PIZIYIMAO\Local Settings\Temp\tmp5E.tmp
path = Path.GetTempPath();//獲取臨時(shí)文件夾保存路徑 C:\Documents and Settings\PIZIYIMAO\Local Settings\Temp\
Console.WriteLine(path);
Console.Read();
}
}
}
2、操作目錄類 Directory與DirectoryInfo
復(fù)制代碼 代碼如下:
using System;
using System.IO;
namespace _12_Directory {
class Program {
static void Main( string[] args) {
DirectoryInfo dic = new DirectoryInfo( "c:\\abc" );
//dic.Name; //獲取文件名
//dic.FullName; //獲取文件全路徑 功能要比Directory強(qiáng)大 區(qū)別在于它是實(shí)例類 而后者是靜態(tài)類
Directory .CreateDirectory("c:\\abc" ); //創(chuàng)建文件夾
Directory .CreateDirectory("c:\\abc\\1\\2\\3\\4\\5\\6\\7" ); //連續(xù)創(chuàng)建多級(jí)文件夾
if (Directory .Exists( "c:\\abc")) //判斷是否存在文件夾
{
Directory .Delete("c:\\abc" ); //如果存在則刪除 如果文件夾為空能正常刪除 不為空則會(huì)報(bào)錯(cuò) "目錄不是空的"
Directory .Delete("c:\\abc" , true); //true則指定 如果文件夾不為空 同樣執(zhí)行刪除操作
}
string [] paths = Directory .GetDirectories( "c:\\abc"); //獲取目錄中所有子目錄名稱 注意只取下一級(jí)別 即c:\abc\1 如獲取windows文件夾下所有文件夾路徑可以使用此方法
string [] paths2 = Directory .GetDirectories( "c:\\windows", "$*" );//以上方法重載實(shí)現(xiàn) 檢索以$開頭的文件
string [] paths3 = Directory .GetDirectories( "c:\\abc", "*" , SearchOption .AllDirectories);//通配符查找文件夾中符合條件的文件 包括子級(jí)文件夾
foreach (string path in paths) {
Console .WriteLine(path);
}
string [] files = Directory .GetFiles( "c:\\windows"); //遍歷文件夾下的所有文件
string [] files2 = Directory .GetFiles( "c:\\windows", "*.ini" , SearchOption .AllDirectories);//通配符查找目錄下的文件 用法類似于GetDirectories
foreach (string file in files2) {
Console .WriteLine(file);
}
//目錄操作最重要的就是 GetFiles和GetDirectories方法
Directory .GetParent("c:\\abc\\1\\2\\3\\4\\5\\6\\7" ); //返回7文件夾的父級(jí)目錄 c:\abc\1\2\3\4\5\6
Console .Read();
}
}
}
3、文件類File
復(fù)制代碼 代碼如下:
using System;
using System.IO;
using System.Text;
namespace _13_File {
class Program {
static void Main( string[] args) {
//file靜態(tài)類 使用file類時(shí)需要注意文件默認(rèn)編碼的使用 如果編碼不正確 文件中會(huì)顯示亂碼
File .AppendAllText("c:\\1.txt" , "gb1232"); //向c:\\1.txt文件中追加 內(nèi)容“gb2312”
//如果存在寫入文件
if (File .Exists( "c:\\1.txt")) {
File .WriteAllText("c:\\1.txt" , "寫入中文有時(shí)會(huì)出現(xiàn)亂碼 需要使用第三個(gè)參數(shù) 指定Encoding文件的編碼格式 Default為默認(rèn)格式" ,Encoding .Default);//WriteAllText是徹底的覆蓋 而AppendAllText是追加
}
//File.ReadAllText();//讀取文件不再列舉 以下方法查看文檔不再舉例
//string[] ReadAllLines(string path) //讀取文本文件到字符串?dāng)?shù)組中
//string ReadAllText(string path) //讀取文本文件到字符串中
//WriteAllLines(string path,string[] contents),//將字符串?dāng)?shù)組逐行保存到文件path中,會(huì)覆蓋舊內(nèi)容。
FileInfo fi = new FileInfo( "c:\\2.txt" );//實(shí)例化的類 功能比f(wàn)ile要強(qiáng)大
fi.AppendText(); //它有很多的方法 和屬性 自己查看 文檔
Console .Read();
}
}
}