Flush()
static void Main(string[] args)
{
FileStream fs = new FileStream(@"c:\1.txt",FileMode.Create);
string s = "hello";
//得到字符串的二进制编码形式
byte[] bytes = Encoding.UTF8.GetBytes(s);
fs.Write(bytes, 0, bytes.Length);//FileStream会把写的数据放到缓冲区中
//fs.Flush();//强制吧缓冲区中的数据写到文件
fs.Close();//关闭流,在关闭之前会把没写入文件中的缓冲区中的数据写入文件
//这就是为什么调用using也可以,因为dispose()方法会调用Close()方法,Close()
//方法回调Flush()
}
StreamReader和StreamWriter类似, StreamReader简化了文本类型的流的读取。
Stream stream = File.OpenRead("c:/1.txt");
using (StreamReader reader = new StreamReader(stream,encoding))
{
//Console.WriteLine(reader.ReadToEnd());
Console.WriteLine(reader.ReadLine());//直接拿reader进行读取,不再需要转换成字节数组了
}
ReadToEnd()用于从当前位置一直读到最后,内容大的话会占内存;
ReadLine读取一行(内部维护了一个指针),如果到了末尾,则返回null。
FileStream fs = new FileStream(@"C:\1.txt");
string s = "hello";
byte[] bytes = Encoding.UTF*.GetBytes(s);//得到字节数组
fs.write(bytes,0,bytes.Length);
•Stream把所有内容当成二进制来看待,如果是文本内容,则需要程序员来处理文本和二进制之间的转换。
•用StreamWriter可以简化文本类型的Stream的处理
•StreamWriter是辅助Stream进行处理的
using (StreamWriter writer = new StreamWriter(stream, encoding))
{
writer.WriteLine("你好");
}
StreamWriter对Stream进行了包装,调一下writer.WriteLine背后帮我们做了把字符串转换为二进制的工作。
浙公网安备 33010602011771号