前言:這篇博客我主要說一下C#中文件流的使用規則,也是從最基礎上面去說,也相信我們大家只要是干Web行業的這些知識點肯定能用上,其中介紹幾個操作文件流的類,Path類,FileStream類,Read和Write方法的使用
- Path
(1) 文件路徑有什么特征?
1)[根目錄:\]文件夾\文件名.后綴名
(2)合並路徑 Combine
string p4 = Path.Combine(@"c:\123a\abc\", "白天不懂夜的黑.mp3");
string p5 = Path.Combine(@"c:\123a\abc", "白天不懂夜的黑.mp3");
(3)獲得文件夾的路徑 GetDirectoryName
string p2 = Path.GetDirectoryName(path);
(4)得到全路徑 GetFullPath
string full = Path.GetFullPath("1.txt");
(5)得到后綴名 GetExtension
string p3 = Path.GetExtension(path);
(6)得到文件名 GetFileName
string p6 = Path.GetFileName(path);
(7)更改文件后綴名 ChangeExtension
string path = @"c:\HYL\CS\File\Exise.avi";
string p1= Path.ChangeExtension(path, "rmvb");
(8)返回臨時文件夾 GetTempPath
string s= Path.GetTempPath();
2. FileStream(文件流),專門將文件以字節流的形式進行處理
(1)父類Stream(流)
(2)使用文件流,無非就是讀取和寫入文件
->讀取文件,就必須想辦法打開文件,使用構造方法
static void Main(string[] args) { using (FileStream fileRead = new FileStream(@"F:\heima\practice\總復習\文件流的讀取\bin\Debug\SqlHelper.txt", FileMode.Open, FileAccess.Read)) { int num; while ((num = fileRead.ReadByte()) != -1) { Console.Write((char)num); } Console.ReadKey(); } }
(3)使用Writer創建文件並且寫入信息:
static void Main(string[] args) { using (FileStream fileWriter = new FileStream("file.txt", FileMode.Create, FileAccess.Write)) { Console.WriteLine("請輸入信息"); string str = Console.ReadLine(); byte[] bs = Encoding.Default.GetBytes(str); for (int i = 0; i < bs.Length; i++) { fileWriter.WriteByte(bs[i]); } } }
(4)自己手動書寫一個ACSII碼表,不需要百度了,只要我們程序員有計算機
static void Main(string[] args) { List<string> list = new List<string>(); list.Add("<body>"); for (int i = 0; i < 128; i++) { list.Add(string.Format("子符 <font size=\"7\" color=\"red\">{0}</font> 的ASCII碼為 <font size=\"7\" color=\"red\">{1}</font> <br/>", (char)i, i)); } list.Add("</body>"); File.WriteAllLines("ASCII.html", list.ToArray(), Encoding.Default); }
- FileStream
(1) ReadByte() 讀取一個字節,返回對應的直接表示數字的十進制形式
(2)WriteByte() 可以寫一個字節
(3)復制文件,對文件加密,解密
static void Main(string[] args) { //對文件進行一個簡單加密 using (FileStream fileRead = new FileStream("夢想的力量.mp3", FileMode.Open, FileAccess.Read)) { using (FileStream fileWrite = new FileStream("夢想.mp3", FileMode.Create, FileAccess.Write)) { int num = -1; while ((num = fileRead.ReadByte()) != -1) { num++; fileWrite.WriteByte((byte)num); } Console.WriteLine("OK"); } } //對上面加密的文件進行解密 using (FileStream fileRead = new FileStream("夢想.mp3", FileMode.Open, FileAccess.Read)) { using (FileStream fileWrite = new FileStream("夢想_解密.mp3", FileMode.Create, FileAccess.Write)) { int num = -1; while ((num = fileRead.ReadByte()) != -1) { num--; fileWrite.WriteByte((byte)num); } Console.WriteLine("OK"); } } }
- Read和Write的使用
(1) Read(存放數據的byte數組,從數組的第一號位置開始放數據,取出多少數據)
(2)一般情況使用的時候 Read(數組名,0,數組名.Length);
static void Main(string[] args) { //讀取文件流 byte[] bs=new byte[10]; using (FileStream fileRead = new FileStream("file.txt", FileMode.Open, FileAccess.Read)) { //Read(存放數據的byte數組,從數組的第一號位置開始放數據,取出多少數據) //一般情況使用的時候 Read(數組名,0,數組名.Length); int count = 0; while ((count = fileRead.Read(bs, 0, bs.Length))>0) { for (int i = 0; i < count; i++) { Console.WriteLine((char)bs[i]); } } } //寫流 using(FileStream fileWrite=new FileStream("file.txt",FileMode.Create,FileAccess.Write)) { byte[] bs = { 0, 97, 98, 99, 48, 49 }; fileWrite.Write(bs, 1, bs.Length - 1); } }
(3)使用Write和Read復制文件
1)語法實現
using(fileRead)
{
using(fileWrite)
{
byte[] bs=new byte[10*1024*1024];
int count=0;
while((count=fileRead.Read(bs,0,bs.Length))>0)
{
fileWrite.Write(bs,0,count);
}
}
}
- 使用命令行參數控制程序,實現控制台程序的模仿copy
(1) 首先新建一個控制台應用程序,起名隨便,然后寫入如下代碼:
static void Main(string[] args) { //保證給的參數只有兩個 if (args.Length != 2) { Console.WriteLine("命令語法不正確"); return; } //得到文件的路徑 string file1 = args[0]; string file2 = args[1]; //判斷第一個文件是否存在 try { using (FileStream fileRead = new FileStream(file1, FileMode.Open, FileAccess.Read)) { using (FileStream fileWrite = new FileStream(file2, FileMode.Create, FileAccess.Write)) { byte[] bs = new byte[10 * 1024]; int count = 0; while ((count = fileRead.Read(bs, 0, bs.Length)) > 0) { fileWrite.Write(bs, 0, count); } Console.WriteLine("以復制\t\t1個文件"); } } } catch { Console.WriteLine("系統找不到指定文件"); } }
(2)然后運行程序,找到Debug文件夾下面的exe文件,復制一個備份,起名為hylcopy.exe
(3)將這個文件復制到C:\Windows這個目錄下面,然后啟動cmd命令
(4)輸入的信息如圖所示:
下篇博客再說一下一些其他的流文件,讀寫流StreamReader和StreamWriter方法,還有File類和Directory類。