珠寶 網(wǎng)站模板免費seo快速收錄工具
FileStream讀寫文件
FileStream類:操作字節(jié)的,可以操作任何的文件
StreamReader類和StreamWriter類:操作字符的,只能操作文本文件。
1、FileStream類
FileStream類
命名空間: ? System.IO
(1)構(gòu)造函數(shù):
- FileStream(String,?FileMode):使用指定的路徑和創(chuàng)建模式初始化FileStream 類的新實例。
- FileStream(String,?FileMode,?FileAccess):使用指定的路徑、創(chuàng)建模式和讀/寫權(quán)限初始化 FileStream 類的新實例。
- Append
- Create
- CreateNew
- Open
- OpenOrCreate
- Truncate
FileAccess 枚舉:
- Read:對文件的讀取訪問權(quán)限。 可以從文件讀取數(shù)據(jù)。 將與結(jié)合起來 Write 為讀/寫訪問。
- ReadWrite:讀取和寫入到文件的訪問。 可以寫入和從文件中讀取數(shù)據(jù)。
- Write:對文件的寫入訪問權(quán)限。 數(shù)據(jù)可以寫入該文件。 將與結(jié)合起來 Read 為讀/寫訪問
(2)方法
- public override int Read(byte[] array, int offset, int count);
- public override void Write(byte[] array, int offset, int count);
- Dispose():釋放由 Stream 使用的所有資源
- Close()關(guān)閉當(dāng)前流并釋放與之關(guān)聯(lián)的所有資源(如套接字和文件句柄)。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; ? ?//FileStream類的命名空間 namespace Filestream讀寫文件 { ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ? //FileStream 操作字節(jié)的 ? ? ? ? ? ? //1.創(chuàng)建FileStream類對象 ? ? ? ? ? ? FileStream fsread = new FileStream(@"F:\C#projects\abc.txt",FileMode.OpenOrCreate,FileAccess.Read); ? ? ? ? ? ? byte[] buffer=new byte[1024*1024*2]; ? ?//定義一個2M的字節(jié)數(shù)組 ? ? ? ? ? ? //返回本次實際讀取到的有效字節(jié)數(shù) ? ? ? ? ? ? int r=fsread.Read(buffer,0,buffer.Length); ? ?//每次讀取2M放到字節(jié)數(shù)組里面 ? ? ? ? ? ? //將字節(jié)數(shù)組中每一個元素按照指定的編碼格式解碼成字符串 ? ? ? ? ? ? string s=Encoding.Default.GetString(buffer,0,r); ? ? ? ? ? ? //關(guān)閉流 ? ? ? ? ? ? fsread.Close(); ? ? ? ? ? ? //釋放流所占用的資源 ? ? ? ? ? ? fsread.Dispose(); ? ? ? ? ? ? Console.WriteLine(s); ?//打印讀取到的內(nèi)容 ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? } ? ? } }
結(jié)果為:
(4)將創(chuàng)建文件流對象的過程寫在using當(dāng)中,會自動的幫助我們釋放流所占用的資源。
(將數(shù)據(jù)寫入文件)代碼為:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; ? ?//FileStream類的命名空間 namespace Filestream讀寫文件 { ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ?? ? ? ? ? ? ? //將創(chuàng)建文件流對象的過程寫在using當(dāng)中,會自動的幫助我們釋放流所占用的資源 ? ? ? ? ? ? using (FileStream fsWrite = new FileStream(@"F:\C#projects\abc.txt", FileMode.OpenOrCreate, FileAccess.Write)) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? string str="看數(shù)據(jù)會不會被覆蓋掉"; ? ? ? ? ? ? ? ? byte[] buffer=Encoding.Default.GetBytes(str); ? ? ? ? ? ? ? ? fsWrite.Write(buffer, 0, buffer.Length); ? ? ? ? ? ? } ? ? ? ? ? ? Console.WriteLine("寫入完成..."); ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? } ? ? } }
運行結(jié)果為:
(5)實現(xiàn)多媒體文件的復(fù)制
代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; ? ?//FileStream類的命名空間 namespace 多媒體文件復(fù)制 { ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ? //思路:就是先將要復(fù)制的多媒體文件讀取出來,然后再寫入到指定的地方 ? ? ? ? ? ? string s_path = @"C:\Users\mei\Desktop\1、復(fù)習(xí).avi"; ? //要讀取的文件路徑(文件有58.3M) ? ? ? ? ? ? string d_path = @"C:\Users\mei\Desktop\new.avi"; ? ? //存放的路徑 ? ? ? ? ? ? CopyFile(s_path, d_path); ? ? ? ? ? ? Console.WriteLine("復(fù)制完成..."); ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? } ? ? ? ? public static void CopyFile(string source,string target) ? ?//自定義文件復(fù)制函數(shù) ? ? ? ? { ? ? ? ? ? ? //創(chuàng)建負(fù)責(zé)讀取的流 ? ? ? ? ? ? using (FileStream fsread = new FileStream(source, FileMode.Open, FileAccess.Read)) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //創(chuàng)建一個負(fù)責(zé)寫入的流 ? ? ? ? ? ? ? ? using (FileStream fswrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write)) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? byte[] buffer=new byte[1024*1024*5]; ? ?//聲明一個5M大小的字節(jié)數(shù)組 ? ? ? ? ? ? ? ? ? ? //因為文件有58.3M,要循環(huán)讀取 ? ? ? ? ? ? ? ? ? ? while(true) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? int r=fsread.Read(buffer, 0, buffer.Length); ? ?//返回本次實際讀取到的字節(jié)數(shù) ? ? ? ? ? ? ? ? ? ? ? ? //如果返回一個0時,也就意味著什么都沒有讀到,讀取完了 ? ? ? ? ? ? ? ? ? ? ? ? if(r==0) ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? fswrite.Write(buffer,0,r); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? } ? ? ? ? } ? ? } }
運行結(jié)果:
2、StreamReader類和StreamWriter類
(1)StreamReader 類
實現(xiàn)一個 TextReader,使其以一種特定的編碼從字節(jié)流中讀取字符。
構(gòu)造函數(shù):
- StreamReader(Stream,?Encoding):用指定的字符編碼為指定的流初始化 StreamReader 類的一個新實例。
屬性:
- EndOfStream:獲取一個值,該值指示當(dāng)前的流位置是否在流結(jié)尾。
方法:
- ReadLine():從當(dāng)前流中讀取一行字符并將數(shù)據(jù)作為字符串返回。(覆蓋 TextReader.ReadLine()。)
代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace StreamReader類和StreamWriter類 { ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ? //使用StreamReader來讀取一個文本文件 ? ? ? ? ? ? using (StreamReader sr = new StreamReader(@"F:\C#projects\abc.txt",Encoding.Default)) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? while (!sr.EndOfStream) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? Console.WriteLine(sr.ReadLine()); //讀取一行之后,在控制臺打印輸出 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ?? ? ? ? ? ? ? } ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? } ? ? } }
運行結(jié)果:
(2)StreamWriter類
實現(xiàn) TextWriter 用于將字符寫入到流中特定的編碼。
構(gòu)造函數(shù):
- StreamWriter(Stream):新實例初始化 StreamWriter 類為使用 utf-8 編碼及默認(rèn)的緩沖區(qū)大小指定的流。
- StreamWriter(Stream,?Encoding):新實例初始化 StreamWriter 為通過使用指定的編碼及默認(rèn)的緩沖區(qū)大小指定的流的類。
- StreamWriter(String,?Boolean):新實例初始化 StreamWriter 類為指定的文件使用默認(rèn)的編碼和緩沖區(qū)大小。 如果該文件存在,則可以將其覆蓋或向其追加。 如果該文件不存在,此構(gòu)造函數(shù)將創(chuàng)建一個新文件。
- Write(String):將字符串寫入流。(覆蓋 TextWriter.Write(String)。)
代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace StreamReader類和StreamWriter類 { ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? //使用StreamWriter來寫入一個文本文件,解決亂碼使用:System.Text.Encoding.Default ? ? ? ? ? ? using (StreamWriter st = new StreamWriter(@"F:\C#projects\abc.txt",true,System.Text.Encoding.Default)) ? ? ? ? ? ? { ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?st.Write("非常好用的類1"); ? ? ? ? ? ? } ? ? ? ? ? ? Console.WriteLine("寫入完成..."); ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? } ? ? } }
結(jié)果: