编码实现>文件和输入输出>Stream流>
Stream流是一组连续存放的数据,具有开头和结尾,并且使用游标指示当前位置。
Stream流包含的数据可来自内存MemoryStream,文件FileStream,或TCP/IP套接字NetWorkStream。
流支持的操作:
读取,数据从Stream流传输到数据结构(字符串或字符节数组)中。
写入,数据从数据源传输到Stream流。
查找,查询和修改你在Stream流的位置。
编码实现>文件和输入输出>Stream流>创建一个文件流
描述,创建一个文件path,并指定文件模式FileMode,访问权限FileAccess,共享访问权限FileShare。
编码实现>文件和输入输出>Stream流>获取和设置文件流属性信息
描述,判断Stream流是否可读,可定为,可写。
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace FileStreamDemo1
{
class Program
{
static void Main(string[] args)
{
const string FilePath=@"C:\MyData.dat";
using (FileStream fs = new FileStream(FilePath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
{
Console.WriteLine("流是否支持可读{0}", fs.CanRead);
Console.WriteLine("流是否支持可写{0}", fs.CanWrite);
Console.WriteLine("流是否支持可查找{0}", fs.CanSeek);
Console.WriteLine("流当前的位置在{0}", fs.Position);
Console.WriteLine("流是否是异步方式打开{0}", fs.IsAsync);
Console.WriteLine("流的长度为{0}", fs.Length);
fs.SetLength(20);
Console.WriteLine("流的新长度为{0}", fs.Length);
}
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>Stream流>定位和读取/写入字节数组到文件流中
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace FileStreamReadandwrite
{
class Program
{
static void Main(string[] args)
{
//使用相对文件位置
const string FilePath = "FileStreamDemo.dat";
// 创建一个用于写入FileStream的随机数据
byte[] DataArry = new byte[100000];
new Random().NextBytes(DataArry);
using (FileStream fs = new FileStream(FilePath, FileMode.Create,FileAccess.ReadWrite,FileShare.None))
{
//逐字节的写入数据到FileStream
for (int i = 0; i < DataArry.Length; i++)
{
fs.WriteByte(DataArry[i]);
}
//从开头位置偏移0字节,即定位到文件流的开头位置
fs.Seek(0, SeekOrigin.Begin);
// 校验数据,使用ReadByte()逐字节的比较
for (int i = 0; i < fs.Length; i++)
{
if (DataArry[i] != fs.ReadByte())
{
Console.WriteLine("写入数据失败,数据内容不匹配!");
return;
}
}
Console.WriteLine("数据己经被写入 {0} 并且经过校对", fs.Name);
}
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>Stream流>流写入类StreamWriter>创建StreamWriter实例
StreamWriter类专为写入字符或字符行而设计。继承于抽象类TextWrtier
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace sw
{
class Program
{
static void Main(string[] args)
{
const string filePath=@"C:\StreamWriterDemo.txt";
//使用Stream类来构造StreamWriter
using (FileStream fs = File.Create(filePath))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("使用流类来构造StreamWriter!");
}
}
//使用指定的文件路径来构造StreamWriter。
using (StreamWriter sw2 = new StreamWriter(filePath))
{
sw2.WriteLine("使用指定的文件路径来构造StreamWriter");
}
}
}
}
编码实现>文件和输入输出>Stream流>流写入类StreamWriter>使用StreamWriter写入文本
描述:创建文本,写入文本。
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace swWrite
{
class Program
{
static void Main(string[] args)
{
const string filePath = @"C:\StreamWriterDemo.txt";
//使用Stream类来构造StreamWriter
using (FileStream fs = File.Create(filePath))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("使用流类来构造StreamWriter!");
//写入一个布尔值;
sw.Write(true);
sw.Write(12);
sw.WriteLine('A');
sw.WriteLine(new string[2] { "StreamWriter", "StreamReader" });
sw.WriteLine("现在是时间是{0}", DateTime.Now.ToShortTimeString());
sw.WriteLine("你叫什么名字".ToCharArray());
}
}
}
}
}
编码实现>文件和输入输出>Stream流>流读取类StreamReader>创建StreamReader实例
StreamReader类用于读取字节数组或字符,包含单个字符,字符块,字符行或整个文件读入一个串变量。继承与TextReader
>读取字符到指定变量
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace srReader
{
class Program
{
static void Main(string[] args)
{
const string filePath = @"C:\StreamWriterDemo.txt";
//通过使用FileStream打开一个文本流,可以进行更精细的文件打开控制。
FileStream fs = File.Open(filePath, FileMode.OpenOrCreate);
//从流中构造StreamReader类实例
StreamReader sr = new StreamReader(fs,Encoding.Default);
//
while (!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
sr.Close();
StreamReader sr2 = new StreamReader(filePath,Encoding.Default);
Console.WriteLine("一次性读出所有的字符");
Console.WriteLine(sr2.ReadToEnd());
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>Stream流>二进制流写入类BinaryWriter
BinaryWriter提供用二进制形式把基元类型写入流,可指定特定编码。常用例子,图片。
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace BinaryWriterDemo
{
class Program
{
static void Main(string[] args)
{
const string filePath=@"C:\BinaryWriter.dat";
FileStream fs=new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.ReadWrite);
//构造BinaryWriter
BinaryWriter bw = new BinaryWriter(fs);
//写入布尔值
bw.Write(true);
//写入字符串
bw.Write("BinaryWriter");
//写入整理值
bw.Write(100);
//调整流位直
bw.Seek(0, SeekOrigin.End);
//保存数据清空缓冲区
bw.Flush();
//关闭文件流。
bw.Close();
}
}
}
编码实现>文件和输入输出>Stream流>二进制流读取类BinaryReader
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace BinaryReaderDemo
{
class Program
{
static void Main(string[] args)
{
const string filePath = @"C:\BinaryWriter.dat";
FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
BinaryReader br = new BinaryReader(fs);
if (br.PeekChar() != -1)
{
string str = br.ReadString();
bool bol = br.ReadBoolean();
Console.WriteLine(str);
Console.WriteLine(bol.ToString());
}
}
}
}