C# BinaryWriter/BinaryReader、FileStream 、StreamWriter/StreamReader
来源:互联网 发布:mui.picker.min.js 编辑:程序博客网 时间:2024/06/09 00:33
C# I/O流 常用BinaryWriter/BinaryReader、FileStream 、StreamWriter/StreamReader。
1、FileStream
FileStream 详细介绍参考msdn
写数据:
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); } }
2、BinaryWriter
BinaryWriter 详细介绍参考msdn
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); }
3、BinaryReader
BinaryReader 详细介绍参考msdn
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); } }
4、StreamWriter
StreamWriter 详细介绍参考msdn
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); }
5、StreamReader
StreamReader 详细介绍参考msdn
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 Stopwatch watch = new Stopwatch(); static void Main() { FileReadAndWrite fileReadAndWrite = new FileReadAndWrite(); watch.Restart(); fileReadAndWrite.BinaryWriterMethod(); watch.Stop(); Console.WriteLine("BinaryWriterMethod()消耗时间(ms): " + watch.ElapsedTicks.ToString()); watch.Restart(); fileReadAndWrite.BinaryReaderMethod(); watch.Stop(); Console.WriteLine("BinaryReaderMethod()消耗时间(ms): " + watch.ElapsedTicks.ToString()); watch.Restart(); fileReadAndWrite.FileStreamWriterMethod(); watch.Stop(); Console.WriteLine("FileStreamWriterMethod()消耗时间(ms): " + watch.ElapsedTicks.ToString()); watch.Restart(); fileReadAndWrite.FileStreamReadMethod(); watch.Stop(); Console.WriteLine("FileStreamReadMethod()消耗时间(ms): " + watch.ElapsedTicks.ToString()); watch.Restart(); fileReadAndWrite.StreamWriterMethod(); watch.Stop(); Console.WriteLine("StreamWriterMethod()消耗时间(ms): " + watch.ElapsedTicks.ToString()); watch.Restart(); fileReadAndWrite.StreamReaderMethod(); watch.Stop(); Console.WriteLine("StreamReaderMethod()消耗时间(ms): " + watch.ElapsedTicks.ToString()); watch.Restart(); fileReadAndWrite.StreamWriterMethod2(); watch.Stop(); Console.WriteLine("StreamWriterMethod2()消耗时间(ms): " + watch.ElapsedTicks.ToString()); watch.Restart(); fileReadAndWrite.StreamReaderMethod2(); watch.Stop(); Console.WriteLine("StreamReaderMethod2()消耗时间(ms): " + watch.ElapsedTicks.ToString()); 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]); } } } } public void StreamWriterMethod2() { using (StreamWriter sw = new StreamWriter("File1.Stream", false, Encoding.UTF8)) { 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); } sw.WriteLine(Encoding.BigEndianUnicode.GetChars(byData)); } } public void StreamReaderMethod2() { using (StreamReader sd = new StreamReader("File1.Stream", Encoding.UTF8)) { char[] chData = new char[readCount / sizeof(char)]; for (int i = 0; i < Cycles; i++) { sd.Read(chData, 0, chData.Length); Buffer.BlockCopy(Encoding.BigEndianUnicode.GetBytes(chData), 0, dis, 0, readCount); } } } #endregion }
阅读全文
0 0
- C# BinaryWriter/BinaryReader、FileStream 、StreamWriter/StreamReader
- C#中流的读写器BinaryReader、BinaryWriter,StreamReader、StreamWriter详解
- FileStream和StreamReader,StreamWrite,BinaryWriter和BinaryReader的用法
- C# StreamReader/StreamWriter与FileStream用法详解
- C# FileStream/StreamWriter/StreamReader的区别
- C# StreamReader/StreamWriter与FileStream用法详解
- C# 读取txt文件 FileStream,StreamReader,StreamWriter
- C# FileStream/StreamWriter/StreamReader的区别
- C# StreamReader/StreamWriter与FileStream用法详解
- FileStream,StreamWriter,StreamReader
- FileStream 和 StreamWriter/StreamReader
- FileStream,StreamReader,StreamWriter
- FileStream\StreamReader\StreamWriter
- FileStream和StreamReader,StreamWrite,BinaryWriter
- c#读写文件的几种方式StreamReader、StreamWriter、FileStream
- C# FileStream、StreamWriter、StreamReader读写文件时BOM头问题
- c# File、FileInfo、Directory、DirectoryInfo、FileStream、StreamWriter、StreamReader的使用
- C#中FileStream和StreamWriter/StreamReader的区别
- Java面试/笔试题大汇总
- hadoop.2.8.1-搭建笔记
- mongodb中的aggregation的使用
- python基础--with-as
- Android学习之OkHttp(浅学)
- C# BinaryWriter/BinaryReader、FileStream 、StreamWriter/StreamReader
- 指针与引用的个人理解----C++初学之路
- Android Matrix的用法总结
- 将windows下的txt格式转化为linux下的文件格式
- Oracle数据库统计信息收集:dbms_stats包的使用说明书
- ECSHOP二次开发教程__连接
- QML之CheckBox与ComboBox
- 《C++ Primer》读书笔记第六章-3-特殊特性 And 函数匹配 And 函数指针
- ssm框架-缓存浅谈