C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)
一、文件流
FileStream类主要用于读写磁盘文件。常用于向磁盘存储数据或读取配置文件。
读取文件:
//文件流:读取
FileStream fileStream = File.Open(@"D:\test.txt", FileMode.Open);//初始化文件流
byte[] array = new byte[fileStream.Length];//初始化字节数组,用来暂存读取到的字节
fileStream.Read(array, , array.Length);//读取流中数据,写入到字节数组中
fileStream.Close(); //关闭流
string str = Encoding.Default.GetString(array);//将字节数组内容转化为字符串
Response.Write(str);
写入文件:
//文件流:写入
FileStream fileStream = File.Open(@"D:\test.txt",FileMode.Append);//初始化文件流
byte[] array = Encoding.Default.GetBytes("哈哈123abc");//给字节数组赋值
fileStream.Write(array, , array.Length);//将字节数组写入文件流
fileStream.Close();//关闭流
二、网络流
NetWorkStream类是专门用来处理服务器与客户端通信的流。它在网络编程中经常使用,主要是用来处理类似Socket、TcpClient和TcpListener这些类中得到的流。
单的TCP同步方式,服务器与客户端通信:
服务器
TcpListener lis=new TcpListener(); //服务器监听
lis.Start();//启动
Socket sock=lis.AcceptSocket();//阻塞,直到有客户端连接 NetworkStream networkStream = new NetworkStream(sock);//得到Socket中的流
if (netStream.DataAvailable) //如果客户端发送了消息
{
byte[] data = new byte[]; //定义一个字节数组,用来存放接收的数据
int len = netStream.Read(data, , data.Length); //从位置开始,读取到字节数组末尾
string line = Encoding.Default.GetString(data, , len); //把收到的字节转换为字符串
}
客户端
TcpClient client = new TcpClient();//客户端tcp对象
client.Connect("127.0.0.1", );//连接服务器
NetworkStream myStream = client.GetStream();//得到网络流 byte[] data = Encoding.Default.GetBytes("Hi,你好"); //首先把输入的字符串消息转换为字节
myStream .Write(data, , data.Length); //向myStream 里写入数据
myStream .Flush(); //刷新流中的数据
myStream .Close();
三、内存流
MemoryStream类主要用于操作内存中的数据。比如说网络中传输数据时可以用流的形式,当我们收到这些流数据时就可以声明MemoryStream类来存储并且处理它们。
MemoryStream操作字符串:
string str = "Hi!你好!";
byte[] array = Encoding.UTF8.GetBytes(str);//将字符串转化为字节数组
MemoryStream memory = new MemoryStream(array);//初始化MemoryStream类
byte[] arrayNew = memory.ToArray();//将内存中的数据转换为字节数组
string strNew = Encoding.UTF8.GetString(arrayNew);//将字节数组转换为字符串
四、StreamReader/StreamWriter
StreamReader/StreamWriter主要用来处理流数据。它们分别提供了高效的流读取/写入功能。
读取:
//StreamReader 读取
StreamReader reader = new StreamReader(@"D:\test.txt",Encoding.Default);//初始化读取 设置编码格式,否则中文会乱码
string readStr = reader.ReadLine();//从流中读取一行 reader.ReadToEnd()读取全部
reader.Close();//关闭流
写入:
//StreamWriter 写入
StreamWriter writer = new StreamWriter(@"D:\test1.txt");//初始化写入
writer.WriteLine("Hi 你好123");//写入一行
writer.Close();
五、TextReader/TextWriter
TextReader/TextWriter类主要用来处理流数据。它们分别提供了高效的文本流读取/写入功能。
//TextReader/Writer读写
TextReader textReader = new StringReader("Hi 你好");//初始化读取流
TextWriter textWriter = new StringWriter();//初始化写入流 char[] c=new char[];
int chars = ;
while ((chars = textReader.Read(c, , )) > )//把流中数据写入到字符数组中 读取流中数据
{
textWriter.Write(c, , );//从字符数组中读取流
} string str= textWriter.ToString();//将流中数据写到字符串中
textReader.Close();//关闭流
textWriter.Close();
注意事项:
1.流使用后必须要关闭。
2.把流中数据加载到内存时要考虑内存溢出等问题。
C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)的更多相关文章
- Java之IO流进阶篇:内存流,打印流,对象流
Java中的IO流,即为输入输出流.所谓输入输出流,都是相对于程序而言,程序就是这个参照物.一张图看懂输入输出流: 输入流抽象基类:InputStream,Reader 输出流抽象基类:OutputS ...
- 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream
package seday06; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExc ...
- 零基础学习java------day17------缓冲字节流,转换字节流,简化流,缓冲字符流,序列化和对象流
1. 缓冲字节流 缓冲区:缓冲区实质上是一个数组.通常它是一个字节数组,但是也可以使用其他种类的数组.但是一个缓冲区不 仅仅 是一个数组.缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程 ...
- delphi中如何将一整个文件读入内存
来源 https://bbs.csdn.net/topics/390985048 分配一块大内存吧,要是一下申请不了64M那么大,就多申请几块小的,用个链表连起来.用FileStream类的方法读取文 ...
- .net 流(Stream) - 文件流、内存流、网络流
转自:http://www.oseye.net/user/kevin/blog/85 一.文件流 FileStream FileStream流继承与Stream类,一个FileStream类的实例实际 ...
- 文件读写(三)利用FileStream类操作字节数组byte[]、BinaryFormatter、内存流MemoryStream
一.Stream类概述 在.NET Framework中,文件和流是有区别的.文件是存储在磁盘上的数据集,它具有名称和相应的路径.当打开一个文件并对其进行读/写时,该文件就称为流(stream).但是 ...
- 用内存流 文件流 资源生成客户端(Delphi开源)
正文:很多木马生成器就是用的内存流和文件流生成客户端的,废话不多说了,代码如下: unit Main; interface usesWindows, Messages, SysUtils, Varia ...
- c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
字节数组byte[]与图片image之间的转化 字节数组转换成图片 public static Image byte2img(byte[] buffer) { MemoryStream ms = ne ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...
随机推荐
- javascript的关于刷新页面给出提示框的代码
// 页面刷新事件 ,或者关闭事件的3中方法!测试都可以!参考官方文档: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHan ...
- 新建的表如果还没有数据,用exp导的时候会忽略
源地址:http://www.07net01.com/2015/07/884873.html
- centos设置开机自启动
编辑 /etc/rc.d/rc.local 将要开启的服务添加到该文件即可
- 关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法
关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法 问题如下图所示,方法是去掉: <i ...
- (medium)LeetCode 236.Lowest Common Ancestor of a Binary Tree
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...
- dwr demo教程
中文版 http://ishare.iask.sina.com.cn/f/11908269.html 想找点资料,MB啊,操了,百度成屎了没啥好教程擦了,这些傻逼博主,写的Jb啥吗,代码不能跑,文字 ...
- IntelliJ IDEA调整控制台输出字体大小
File->Settings->Editor->Colors & Fonts->Console Font Size: 16
- ofstream的问题
ofstream在多字节编码的项目中, 写入中文目录写不了, 英文目录可以 换成c库的fopen, fwrite可以
- http是什么?
http HyperText Transfer Protocol 超文本传输协议,是一个应用层通信协议. 可以用wireshark抓取.
- Indian Scientists Design Device to Collect Solar Energy 印度科学家设计太阳能收集设备
Indian scientists have designed a new device they hope will solve one of the biggest problems with ...