C#中的文件流和文本流

文本流

文本流用于文本的读写。要谈文本,首先要了解的是文本编码。在网络编程中,常用的是ASCII,UTF8和BigEndianUnicode码。

其中ASCII码最常见。几乎所有的协议都支持ASCII码。SMTP和POP3协议使用UTF8编码,但也支持ASCII码。

1、向文件写入文本流

string strs="sss";
StreamWriter stream=null;
stream=new StreamWriter(@"e:/11.txt",System.Text.Encoding.UTF8);
stream.Write(strs);
stream.Close();

2、向网络流中写入文本

string strs="ssss";
byte[] buffer=System.Text.Encoding.UTF8.GetBytes(strs);//得到字符串的字节流
NetworkStream newStream=new NetworkStream(mySock);
newStream.Write(buffer,0,buffer.Length);

3、从文件读取文本

StreamReader sr=new StreamReader("e://1.txt",System.Text.Encoding.UTF8);
string myStr=sr.ReadToEnd();
sr.Close();

4、从网络流中读取文本

string strs="sssss";
byte[] buffer=System.Text.Encoding.UTF8.GetBytes(strs);
NetworkStream newStream=new NetworkStream(sock);
newStream.Read(buffer,0,buffer.Length);

文件流

1、将网络流数据写入文件

FileStream fileStream=new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.Write);
NetworkStream stream=new NetworkStream(sock);
int readNumber=0;
byte[] buffer=new byte[8];
while(readStream=stream.Read(buffer,0,buffer.Length)>0)
{
fileStream.Write(buffer,0,readStream);//将网络流写到文件流中
fileStream.Flush();//刷新数据流
}
fileStream.Close();

2、将文件写到网络流中

FileStream fileStream=new FileStream(filePath,FileMode.Open,FileAccess.Read);
NetworkStream newStream=new NetworkStream(mysock);
int number;
byte[] buffer=new byte[8];//定义缓存区
while((number=fileStream.Read(buffer,0,buffer.Length))!=0)
{
newStream.write(buffer,0,buffer.Length);
newStream.Flush();//刷新流
buffer=new byte[8];
}
fileStream.Close();