所在命名空間:
using System.IO
1.Path
string path = @"C:/Users/Leo/Desktop/123.txt";
獲取路徑的擴展名
string ge = Path.GetExtension(path);
Console.WriteLine(ge);
返回文件名與擴展名
string gf = Path.GetFileName(path);
Console.WriteLine(gf);
修改文件的后綴名(擴展名)
string ce = Path.ChangeExtension(path, ".exe");
Console.WriteLine(ce);
string str1 = "D:/";
string str2 = "super/run";
// 將字符串組合成一個路徑
string cb = Path.Combine(str1, str2);
Console.WriteLine(cb);
返回路徑的目錄信息
string gd = Path.GetDirectoryName(path);
Console.WriteLine(gd);
拿到路徑的文件名啃匿,不包括擴展名
string gfnwe = Path.GetFileNameWithoutExtension(path);
Console.WriteLine(gfnwe);
拿到自定字符串的絕對路徑
string gfp = Path.GetFullPath(path);
Console.WriteLine(gfp);
// 拿到路徑的根路徑
string gpr = Path.GetPathRoot(path);
Console.WriteLine(gpr);
// 獲取路徑是否包含擴展名
//Console.WriteLine(Path.HasExtension(path));
// 判斷路徑是否包含根路徑
Console.WriteLine(Path.IsPathRooted(path));
// 獲取分隔符 冠王;
char c = Path.PathSeparator;
Console.WriteLine("8888"+c);
// 獲取硬盤的分割符 :
char c1 = Path.VolumeSeparatorChar;
Console.WriteLine("9999" + c1);
// 獲取路徑的分割符 \
char c2 = Path.DirectorySeparatorChar;
Console.WriteLine("7777" + c2);
// 獲取路徑的分割符在此平臺的分隔符號 /
char c3 = Path.AltDirectorySeparatorChar;
Console.WriteLine("6666" + c3);
//char[] cs = Path.InvalidPathChars;
//foreach (var item in cs)
//{
// Console.WriteLine("1111"+item);
//}
2. FileInfo 文件操作
- 1> 實例化一個文件操作對象
FileInfo file = new FileInfo(將要操作的文件路徑的字符串);
- 2> 創(chuàng)建該文件
file.Create(); // 創(chuàng)建一個文件
- 3> 判斷文件是否存在
file.Exists(); 查看指定的文件路徑是否存在
- 4> 獲取文件的大小
file.Length; Length 獲取一個文件的大兄孪 (單位是字節(jié))
- 5> 文件的名稱
file.Name; // 獲取一個文件的名字(不包含路徑)
- 6> 復(fù)制文件,會保留原有文件
file.CopyTo(將要復(fù)制到的路徑,需要加復(fù)制過來的文件名字。);
file.CopyTo(@"C:\Users\Administrator\Desktop\" + "test.txt");
- 7> 刪除一個文件
file.Delete(); // 刪除文件
- 8> 是否是只讀
file.IsReadOnly;
- 9> 移動文件夫嗓,會刪除原有文件
file.MoveTo(將要移動到的地方); // 將一個文件移動到另一個地方移剪。會刪除源文件
項目中的文件操作,要求將項目中添加的文件放到項目輸出目錄下埠忘。
首先將文件拖拽到項目目錄下。然后如下操作:
第一步
第二步
3. DirectoryInfo
文件夾操作
- 1> 實例化文件夾操作對象
DirectoryInfo dir = new DirectoryInfo("將要操作的文件夾的路徑");
- 2> 判斷文件夾是否存在
dir.Exists;
Console.WriteLine(dir.Exists);
- 3> 創(chuàng)建該文件夾
dir.Create();
- 4> 刪除文件夾
dir.Delete(); // 刪除該文件夾馒索。
dir.Delete(True); // 刪除該文件夾莹妒,并刪除該文件夾下所有的子目錄和文件
- 5> 獲取該文件夾下的所有文件
dir.GetFiles(); // 返回FileInfo的數(shù)組
- 6> 移動文件夾
dir.MoveTo("將要移動到的路徑"); // 將文件夾移動到另一個路徑。 會刪除原文件
- 7> 獲取其父目錄
dir.Parent; // 獲取父目錄 返回的是一個DirectoryInfo的對象
- 8> 獲取文件夾的名字
dir.Name; // 獲取文件夾的名字绰上。 不包含路徑信息
4.File
讀寫文件
- 中文的編碼為gb2312
string path = @"C:/Users/Leo/Desktop/1234.txt";
//int range = path.LastIndexOf('/');
//string st = path.Substring(range + 1);
//Console.WriteLine(st);
string[] strs = {"I have a dream旨怠!" };
// 給文件添加行
File.AppendAllLines(path, strs);
// 給文件添加字符串
File.AppendAllText(path, "you are beautiful");
// 注意:要被賦值的文件應(yīng)該是不存在的
File.Copy(path, "C:/Users/Leo/Desktop/456.txt");
// 創(chuàng)建文件夾
File.Create(path);
// 創(chuàng)建文件,使用UTF8編碼
File.CreateText(path);
// 刪除
File.Delete(path);
//加密
File.Encrypt(path);
// 解密
File.Decrypt(path);
// 判斷當(dāng)前文件是否存在
if (File.Exists(path))
{
Console.WriteLine("當(dāng)前文件存在");
}
else
{
Console.WriteLine("文件不存在");
}
// 獲取封裝路徑的指定條目
FileSecurity d = File.GetAccessControl(path);
Console.WriteLine(d.ToString());
// 獲取此路徑上的檔案
FileAttributes a = File.GetAttributes(path);
Console.WriteLine(a.ToString());
// 獲取創(chuàng)建時間
DateTime t = File.GetCreationTime(path);
Console.WriteLine(t.ToLocalTime());
// 移動,會將原有的文件刪除
File.Move(path, "C:/Users/Leo/Desktop/456.txt");
// 以讀寫的權(quán)限打開文件的流
File.Open(path, FileMode.OpenOrCreate);
// 拿到可以讀取的當(dāng)前文件流
FileStream str = File.OpenRead(path);
Console.WriteLine(str.ToString());
byte[] buffer = File.ReadAllBytes(path);
Console.WriteLine(buffer.Length);
for (int i = 0; i < buffer.Length; i++)
{
// 輸出的是元素的二進(jìn)制數(shù)值(Ascii)
Console.WriteLine(buffer[i]);
}
// 輸出里面所有的文件用字符串?dāng)?shù)組的方法
string[] substr = File.ReadAllLines(path);
foreach (var item in substr)
{
Console.WriteLine(item);
}
// 輸出文本所有行
string lineStr = File.ReadAllText(path);
Console.WriteLine(lineStr);
// 控制文件的屬性
FileAttributes f = FileAttributes.Device;
File.SetAttributes(path,f );
File.WriteAllText(path, "leichao");
string[] strnumber = { "leichjao", "jiaoyu", "huanying", "ni" };
File.WriteAllLines(path, strnumber);
byte[] b1 = { 59, 59, 59, 59, 59 };
File.WriteAllBytes(path,b1);
4. FileStream
讀寫文件
多用來處理2進(jìn)制文件
FileSteam fs = new FileSteam("文件路徑"蜈块,F(xiàn)ileModel.Open)
byte[] buffer = new byte[1024*1024*5];
// 返回被刺實際讀取到的有效字節(jié)數(shù)
int r = fs.Read(buffer,0,buffer.Length);
// 將字節(jié)數(shù)組中每一個元素按照指定的編碼格式解碼成字符串
string s = Encoding.Default.GetString(buffer);
// 關(guān)閉流
fs.Close();
// 釋放流所占用的資源
fs.Dispose();
using(FileSteam fs = new FileSteam(@"路徑"鉴腻,F(xiàn)ileMode.OpenOrCreat,FileAccess.Write))
{
string str = "謝謝你的關(guān)心";
byte[] buffer = Encoding.Default.GetBytes(str);
fs.Write(buffer,0,buffer.Length);
}
Console.WriteLine("寫入ok");
// 1.創(chuàng)建一個負(fù)責(zé)讀取的流
using(FileSteam fs = new FileSteam(source,FileMode.OpenOrCreat,FileAcces.Write))
{
// 創(chuàng)建寫入的流
using(FileStream fsWrite = new FileStream(target,FileMode.OpenOrCreat,FileAcces.Write))
{
byte[] buffer = new byte[1024*1024*5];
// 因為文件比較大,所以通過一個循環(huán)去讀取
while(true)
{
//返回讀取到的字節(jié)數(shù)
int r = fs.Read(buffer,0,buffer.length)
// 如果r是0百揭,就表示沒有讀取到
if(r==0)
{
break;
}
// 因為這個長度是固定的爽哎,并不是我們讀取到的,所以以r為主
// fsWrite.Write(buffer,0,buffer.Length); 錯誤
fsWrite.Write(buffer,0,r);
}
}
}
6. StreamReader和StreamWriter
多用來用于處理文本文件器一。自動處理文本格式
/// <summary>
/// 讀取用戶傳遞的路徑文本資料课锌,并以用戶需要的格式顯示出來
/// </summary>
/// <param 文件路徑="path"></param>
/// <param 編碼格式="encoding"></param>
static void StreamRead(string path,Encoding encoding)
{
using (StreamReader r = new StreamReader(path, encoding))
{ // 這種只能讀取一行
// Console.WriteLine(r.ReadLine());
// 如果當(dāng)前的流不在最后一個位置,意思就是沒讀完文本
while (!r.EndOfStream)
{
// 讀取
Console.WriteLine(r.ReadLine());
}
r.Close(); // 釋放資源
}
}
/// <summary>
/// 書寫自己添加的內(nèi)容祈秕,并讀取
/// </summary>
/// <param 文件路徑="path"></param>
/// <param 編碼格式="encoding"></param>
/// <param 書寫內(nèi)容="writerContent"></param>
static void StreamWrite(string path, Encoding encoding,string writerContent)
{
// 追加只需要在后面參數(shù)寫true
using (StreamWriter s = new StreamWriter(path, true, encoding))
{
s.Write(writerContent);
s.Close();
}
}