FileStream 詳細介紹參考msdnc#
using (FileStream fs = new FileStream("File.FileStream", FileMode.Create, FileAccess.Write)) { for (int i = 0; i < Cycles; i++) { for (int j = 0; j < Length; j++) { dis[j] = i * Length + j; } Buffer.BlockCopy(dis, 0, byData, i * readCount, readCount); } fs.Write(byData, 0, byData.Length); }
using (FileStream fs = new FileStream("File.FileStream", FileMode.Open, FileAccess.Read)) { for (int i = 0; i < Cycles; i++) { fs.Seek(i * readCount, SeekOrigin.Begin); fs.Read(byData, 0, readCount); dis = new double[Length]; Buffer.BlockCopy(byData, i * readCount, dis, 0, readCount); } }
using (BinaryWriter bw = new BinaryWriter(File.Open("File.Binary", FileMode.Create))) { byte[] data = new byte[Cycles * readCount]; for (int i = 0; i < Cycles; i++) { for (int j = 0; j < Length; j++) { dis[j] = i * Length + j; } Buffer.BlockCopy(dis, 0, data, i * readCount, readCount); } bw.Write(data); }
using (BinaryReader wr = new BinaryReader(File.Open("File.Binary", FileMode.Open))) { for (int i = 0; i < Cycles; i++) { var readData = wr.ReadBytes(readCount); dis = new double[Length]; Buffer.BlockCopy(readData, 0, dis, 0, readCount); } }
using (StreamWriter sw = new StreamWriter("File.Stream", false, Encoding.GetEncoding("utf-16"))) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < Cycles; i++) { for (int j = 0; j < Length; j++) { dis[j] = i * Length + j; sb.AppendFormat("{0},", dis[j]); } sb.AppendFormat("\n"); } sw.WriteLine(sb); }
using (StreamReader sd = new StreamReader("File.Stream", Encoding.GetEncoding("utf-16"))) { for (int i = 0; i < Cycles; i++) { string[] ch = sd.ReadLine().Split(new Char[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); for (int j = 0; j < Length; j++) { double.TryParse(ch[j], out dis[j]); } } }
class Program { static void Main() { fileReadAndWrite.BinaryWriterMethod(); fileReadAndWrite.BinaryReaderMethod(); fileReadAndWrite.FileStreamWriterMethod(); fileReadAndWrite.FileStreamReadMethod(); fileReadAndWrite.StreamWriterMethod(); fileReadAndWrite.StreamReaderMethod(); Console.ReadKey(true); } }
class FileReadAndWrite { private const int Length = 1024; private const int Cycles = 64; private int readCount; private byte[] byData; private double[] dis; public FileReadAndWrite() { readCount = Length * sizeof(double); dis = new double[Length]; byData = new byte[Cycles * Length * sizeof(double)]; } #region BinaryWriter\BinaryReader public void BinaryWriterMethod() { using (BinaryWriter bw = new BinaryWriter(File.Open("File.Binary", FileMode.Create))) { byte[] data = new byte[Cycles * readCount]; for (int i = 0; i < Cycles; i++) { for (int j = 0; j < Length; j++) { dis[j] = i * Length + j; } Buffer.BlockCopy(dis, 0, data, i * readCount, readCount); } bw.Write(data); } } public void BinaryReaderMethod() { using (BinaryReader wr = new BinaryReader(File.Open("File.Binary", FileMode.Open))) { for (int i = 0; i < Cycles; i++) { var readData = wr.ReadBytes(readCount); Buffer.BlockCopy(readData, 0, dis, 0, readCount); } } } #endregion #region FileStream Read\Write public void FileStreamWriterMethod() { using (FileStream fs = new FileStream("File.FileStream", FileMode.Create,FileAccess.Write)) { for (int i = 0; i < Cycles; i++) { for (int j = 0; j < Length; j++) { dis[j] = i * Length + j; } Buffer.BlockCopy(dis, 0, byData, i * readCount, readCount); } fs.Write(byData, 0, byData.Length); } } public void FileStreamReadMethod() { using (FileStream fs = new FileStream("File.FileStream", FileMode.Open, FileAccess.Read)) { for (int i = 0; i < Cycles; i++) { fs.Seek(i * readCount, SeekOrigin.Begin); fs.Read(byData, 0, readCount); Buffer.BlockCopy(byData, i * readCount, dis, 0, readCount); } } } #endregion #region StreamWriter\StreamReader public void StreamWriterMethod() { using (StreamWriter sw = new StreamWriter("File.Stream", false, Encoding.GetEncoding("utf-16"))) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < Cycles; i++) { for (int j = 0; j < Length; j++) { dis[j] = i * Length + j; sb.AppendFormat("{0},", dis[j]); } sb.AppendFormat("\n"); } sw.WriteLine(sb); } } public void StreamReaderMethod() { using (StreamReader sd = new StreamReader("File.Stream", Encoding.GetEncoding("utf-16"))) { for (int i = 0; i < Cycles; i++) { string[] ch = sd.ReadLine().Split(new Char[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); for (int j = 0; j < Length; j++) { double.TryParse(ch[j], out dis[j]); } } } } #endregion }