//FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。 //FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据), //就必须由FileStream对象执行,稍后对此进行介绍。 //有几种方法可以创建FileStream对象。构造函数具有许多不同的重载版本,最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举值。 // FileStream fs = new FileStream(fileName,FileMode.Member); //另一个重要的构造函数是 //FileStream fs=new FileStream(fileName,FileMode.Member,FileAccess.Member); //FileMode有几个成员,规定了如何打开或创建文件。 //使用每个值会发生什么,取决于指定的文件名是否已经存在。 //成 员 文 件 存 在 //Append 打开文件,流指向文件的末尾,只能与枚举FileAccess.Write联合使用 //Create 删除该文件,然后创建新文件 //CreateNew 抛出异常 //Open 打开现有的文件,流指向文件的开头 //OpenOrCreate 打开文件,流指向文件的开头 //Truncate 打开现有文件,清除其内容。流指向文件的开头,保留文件的初始创建日期 //FileAccess的成员 //Read 打开文件 只读文件 //Write 打开文件,只写文件 //ReadWrite 打开文件,用于读写 //File和FileInfo类都提供了OpenRead()和OpenWrite()方法,更易于创建FileStream对象。前者打开了只读访问的文件,后者只允许写入文件。 //这些都提供了快捷方式,因此不必以FileStream构造函数的参数形式提供前面所有的信息。 // FileStream fs = File.OpenRead(fileName); //FileInfo fi = new FileInfo(FileName); //FileStream fs = fi.OpenRead(); //*****************************************************// // 1 文件位置 //*****************************************************// //FileStream内部有一个维护文件位置的指针。该指针默认是文件的开始位置。但是是可以修改的。利用seek(step,SeekOrigin.Member)方法即可。 //SeekOrigin成员 //Begin -- Current-- End 三个属性。 //Step是以字节为单位的步长 //*****************************************************// // 2 读取文件 //*****************************************************// //FileStream类只能读取字节数据(文本文件,图像,音频等) //StreamReader类能读取字符数据 //但是 可以利用其他方法将读取的字符数据跟字节数据进行相互转换 //FileStream类的FileStream.Read(byteArray,Origin,Length)可以读取数据。 namespace FileStreamStudy { class Program { static void Main(string[] args) { byte[] _fileBytesData=new byte[200]; char[] _fileCharsData = new char[200]; try { System.IO.FileStream _getFileStream = new System.IO.FileStream(@"G:/SelfSoftStudy/FileStream/FileStream/Program.cs", FileMode.Open); _getFileStream.Seek(113,SeekOrigin.Begin); _getFileStream.Read(_fileBytesData, 0, 200); } catch (IOException ex) { Console.WriteLine("An IO Exception occured!"); Console.WriteLine(ex.Message); Console.Read(); } Decoder _bytesToChars = Encoding.UTF8.GetDecoder(); _bytesToChars.GetChars(_fileBytesData, 0, _fileBytesData.Length, _fileCharsData, 0); Console.WriteLine(_fileCharsData); Console.Read(); } } }