前言:這篇博客我主要說一下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類。
