<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
使用流把檔案讀取到位元組陣列:
//FileMode.Create, FileMode.Append //FileAccess.Write, FileAccess.ReadWrite //FileMode和FileAccess搭配使用,如果第二個引數FileMode.Appden寫追加,第三個引數FileAccess.Read唯讀,會拋異常 Stream source = new FileStream(@"1.jpg",FileMode.Open, FileAccess.Read) byte[] buffer = new byte[source.Length]; int bytesRead = source.Read(buffer, i, (int)source.Length);
Int32型別的最大值,以及Byte, KB, MB, GB轉換:
Int32.MaxValue = 2147483647 Byte
2147483647/1024 = 2097152 KB(1 KB = 1024 Byte)
2097152/1024 = 2048 MB(1 M = 1024 KB)
2048/1024 = 2 G(1G = 1024M)
使用流把位元組陣列寫到檔案:
Stream target = new FileStream(@"2.jpg", FileMode.Create, FileAccess.Write); Stream source = new FileStream(@"1.jpg",FileMode.Open, FileAccess.Read) byte[] buffer = new byte[source.Length]; int bytesRead = source.Read(buffer, i, (int)source.Length); target.Write(buffer, 0, buffer.Length); source.Dispose(); target.Dispose();
使用流對大檔案進行分批讀取和寫入:
int BufferSize = 10240; // 10KB Stream source = new FileStream(@"D:a.mp3", FileMode.Open, FileAccess.Read); Stream target = new FileStream(@"D:b.mp3", FileMode.Create, FileAccess.Write); byte[] buffer = new byte[BufferSize]; int byteRead; do{ byteRead = source.Read(buffer, 0, BufferSize); target.Write(buffer, 0, bytesRead); } while(byteRead > 0); target.Dispose(); source.Dispose();
在Stream抽象類下包含:
→FileStream→IsolatedStoreageFileStream
→MemoryStream
→NetworkStream
CanRead()
Read(byte[] buffer, int offset, int count)
CanWrite()
Write(byte[] buffer, int offset, int count)
WriteByte(Byte value)
CanSeek()
Seek(long offset, SeekOrigion)
Position流的指標位置
Close()
Dispose()
Flush()將快取裝置寫入儲存裝置
CanTimeout()
ReadTimeout()
WriteTimeout()
Length
SetLength(long value)
實現了Decorator模式,包含對Stream抽象基礎類別的參照,同時繼承自Stream抽象基礎類別。
不是流型別,而是協助開發者處理流包含的資料,並且不需要將流讀取到Byte[]位元組陣列中。但流的包裝器類包含了對流的參照。
繼承自TextReader。
將流中的資料讀取為字元。
FileStream fs = new FileStream("a.txt", FileMode.Open, FileAcess.Read); StreamReader reader = new StreamReader(fs, Encoding.GetEncoding("GB2312")); //或者 //StreamReader reader = new StreamReader("a.txt"); //預設採用UTF-8編碼方式
繼承自TextWriter。
將字元寫入到流中。
string text = @"aa bb cc"; StringReader reader = new StringReader(text); int c = reader.Read(); Console.Write((char)c); char[] buffer = new char[8]; reader.Read(buffer, 0, buffer.Length); Console.Write(String.Join("",buffer)); string line = reader.ReadLine(); Console.WriteLine(line); string rest = reader.ReadToEnd(); Console.Write(); reader.Dispose();
也繼承自TextReader和TextWriter,但是用來處理字串。
BinaryWriter用於向流中以二進位制方式寫入基元型別,比如int, float, char, string等.BinaryReader用於從流中讀取基元型別。注意,這2個類並不是繼承TextReader和TextWriter。
namespace ConsoleApplication29 { class Program { static void Main(string[] args) { Product p = new Product("product.bin") { Id = 1, Name = "GOOD", Price = 500F }; p.Save(); Product newP = new Product("product.bin"); newP.Load(); Console.WriteLine(newP); Console.ReadKey(); } } public class Product { public int Id { get; set; } public string Name { get; set; } public double Price { get; set; } private string filePath; public Product(string filePath) { this.filePath = filePath; } public void Save() { FileStream fs = new FileStream(this.filePath, FileMode.Create,FileAccess.Write); BinaryWriter writer = new BinaryWriter(fs); writer.Write(this.Id); writer.Write(this.Name); writer.Write(this.Price); writer.Dispose(); } public void Load() { FileStream fs = new FileStream(this.filePath, FileMode.Open,FileAccess.Read); BinaryReader reader = new BinaryReader(fs); this.Id = reader.ReadInt32(); this.Name = reader.ReadString(); this.Price = reader.ReadDouble(); reader.Dispose(); } public override string ToString() { return String.Format("Id:{0},Name:{1},Price:{2}", this.Id, this.Name, this.Price); } } }
結果:
編碼方式:
定義了位元組如何轉換成人類可讀的字元或者文字,可以看作是位元組和字元的對應關係表。在讀取檔案採用的編碼方式要和建立檔案採用的編碼方式保持一致。
在System.IO名稱空間下。
FileStream fs = File.Create("a.txt");
Open(string path, FileMode mode)
OpenRead()
OpenWrite()
ReadAllText()
ReadAllByte()
WriteBllBytes()
WriteAllLines()
Copy(string sourceFileName, string destFileName)
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對it145.com的支援。如果你想了解更多相關內容請檢視下面相關連結
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45