【C#】對文字、圖片、音訊檔案的讀取與寫入
阿新 • • 發佈:2019-02-19
對於檔案的儲存都採用流(System.IO.Stream)形式儲存與讀取
1.檔案流——FileStream 包括: StreamWriter和 BinaryWriter
2.快取流——BufferStream
3.記憶體流——MemoryStream
4.網路流——NetworkStream
注:針對文字形式的採用————StreamWriter和 StreamReader類;
對與圖片,壓縮檔案等二進位制流檔案採用———— BinaryWriter和 BinaryReader類
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、 //對文字的操作,即讀取與寫入( StreamWriter和 StreamReader)
二、 //對圖片的操作,即讀取與寫入( BinaryWriter和 BinaryReader )
三、 //對音訊的操作,即讀取與寫入( BinaryWriter和 BinaryReader )
1.檔案流——FileStream 包括: StreamWriter和 BinaryWriter
2.快取流——BufferStream
3.記憶體流——MemoryStream
4.網路流——NetworkStream
注:針對文字形式的採用————StreamWriter和 StreamReader類;
對與圖片,壓縮檔案等二進位制流檔案採用———— BinaryWriter和 BinaryReader類
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、 //對文字的操作,即讀取與寫入( StreamWriter和 StreamReader)
public void OperatFile() { if (ishe==false ) { SaveFileDialog sfd1 = new SaveFileDialog(); sfd1.InitialDirectory = @"C:\My\Text"; //設定檔案儲存型別 sfd1.Filter = "txt檔案|*.txt|所有檔案|*.*"; //如果使用者沒有輸入副檔名,自動追加字尾 sfd1.AddExtension = true; //設定標題 sfd1.Title = "file"; if (sfd1.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(Path.GetFileName(sfd1.FileName), FileMode.Open, FileAccess.ReadWrite); StreamWriter sw = new StreamWriter(fs); sw.Write(textBoxX1.Text,Encoding.Default); sw.Close(); fs.Close(); } labelX1.Text = "檔案儲存成功!"; } else { OpenFileDialog ofd1 = new OpenFileDialog(); ofd1.Filter = "txt檔案|*.txt|所有檔案|*.*"; if (ofd1.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(ofd1.FileName, FileMode.Open, FileAccess.ReadWrite); StreamReader sr = new StreamReader(fs, Encoding.Default); s = sr.ReadLine(); while (sr.Peek() != -1) { textBoxX1.Text += s; s = sr.ReadLine(); } sr.Close(); fs.Close(); } labelX1.Text = "開啟檔案:" + ofd1.FileName; } labelX1.Text = "檔案儲存成功!"; }
二、 //對圖片的操作,即讀取與寫入( BinaryWriter和 BinaryReader )
public void OperatImage() { if (ishe == false) { OpenFileDialog ofd1 = new OpenFileDialog(); // ofd1.Filter = "bin檔案|*.bin"; ofd1.Filter = "jpg圖片|*.jpg|gif圖片|*.gif|png圖片|*.png"; if (ofd1.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(ofd1.FileName, FileMode.Open); BinaryReader br = new BinaryReader(fs); int lenth = Convert.ToInt32(br.BaseStream.Length); bytes = br.ReadBytes(lenth); using (FileStream fs1 = new FileStream(@"G:\My\Picture\text.bin", FileMode.Create)) { BinaryWriter bw = new BinaryWriter(fs1); for (int i = 0; i < bytes.Length; i++) { bw.Write(bytes[i]); } bw.Close(); } br.Close(); fs.Close(); MemoryStream ms = new MemoryStream(bytes); //設定圖片框 pictureBox1中的圖片 this.pictureBox1.Image = Image.FromStream(ms); } } else { OpenFileDialog ofd1 = new OpenFileDialog(); ofd1.Filter = "bin檔案|*.bin"; // ofd1.Filter = "jpg圖片|*.jpg|gif圖片|*.gif|png圖片|*.png"; if (ofd1.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(ofd1.FileName, FileMode.Open); BinaryReader br = new BinaryReader(fs); int lenth = Convert.ToInt32(br.BaseStream.Length); bytes = br.ReadBytes(lenth); br.Close(); fs.Close(); //例項化一個記憶體流--->把從檔案流中讀取的內容[位元組陣列]放到記憶體流中去 MemoryStream ms = new MemoryStream(bytes); //設定圖片框 pictureBox1中的圖片 this.pictureBox1.Image = Image.FromStream(ms); } labelX2.Text = "開啟檔案:" + ofd1.FileName; } }
三、 //對音訊的操作,即讀取與寫入( BinaryWriter和 BinaryReader )
public void OperatAudio() { if (ishe == false) { OpenFileDialog ofd1 = new OpenFileDialog(); ofd1.Filter = "mp3音訊|*.mp3|wma音訊|*.wma"; if (ofd1.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(ofd1.FileName, FileMode.Open); BinaryReader br = new BinaryReader(fs); int lenth = Convert.ToInt32(br.BaseStream.Length); bytes = br.ReadBytes(lenth); using (FileStream fs1 = new FileStream(@"G:\My\Video\text.bin", FileMode.Create)) { BinaryWriter bw = new BinaryWriter(fs1); for (int i = 0; i < bytes.Length; i++) { bw.Write(bytes[i]); } bw.Close(); } br.Close(); fs.Close(); } } else { OpenFileDialog ofd1 = new OpenFileDialog(); ofd1.Filter = "bin檔案|*.bin"; if (ofd1.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(ofd1.FileName, FileMode.Open); BinaryReader br = new BinaryReader(fs); FileStream fs1 = new FileStream(@"G:\My\Video\text.mp3", FileMode.Create); BinaryWriter bw = new BinaryWriter(fs1); int lenth = Convert.ToInt32(br.BaseStream.Length); bytes = br.ReadBytes(lenth); bw.Write(bytes); bw.Close(); fs1.Close(); br.Close(); fs.Close(); } labelX2.Text = "開啟檔案:" + ofd1.FileName; } }