FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行.
其中创建FileStream对象最简单的构造函数如下:

 


Code 
  
FileStream file = new FileStream(fileName,FileMode.Member);
FileStream file = new FileStream(fileName, FileMode.Member, FileAccess.Member);


而FileAccess的成员:



成 员
 说 明
 
Read
 打开文件,用于只读
 
Write
 打开文件,用于只写
 
ReadWrite
 打开文件,用于读写
 

 

对文件进行不是FileAccess枚举成员指定的操作会导致抛出异常。此属性的作用是,基于用户的身份验证级别改变用户对文件的访问权限。

在FileStream构造函数不使用FileAccess枚举参数的版本中,使用默认值FileAccess. ReadWrite。

FileMode枚举成员,使用每个值会发生什么,取决于指定的文件名是否表示已有的文件。

成 员
 文 件 存 在
 文件不存在
 
Append
 打开文件,流指向文件的末尾,只能与枚举FileAccess.Write联合使用
 创建一个新文件。只能与枚举FileAccess.Write联合使用
 
Create
 删除该文件,然后创建新文件
 创建新文件
 
CreateNew
 抛出异常
 创建新文件
 
Open
 打开现有的文件,流指向文件的开头
 抛出异常
 
OpenOrCreate
 打开文件,流指向文件的开头
 创建新文件
 
Truncate
 打开现有文件,清除其内容。流指向文件的开头,保留文件的初始创建日期
 抛出异常
 

 

FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据
StreamWriter允许将字符和字符串写入文件,它处理底层的转换,向FileStream对象写入数据。StreamReader也类似。
实例:


Code 
  
/// <summary>
        /// 文本文件的读写操作
        /// </summary>
        private static void TextFileOperate()
        {
            //创建文件并写入
            if(!File.Exists(path))
            {
                using(StreamWriter sw = File.CreateText(path))
                {
                    sw.WriteLine("hello world is writing start");
                    sw.WriteLine("hello world is writing end");
                }
            }
            //读取文件
            if(!File.Exists(path))
            {
                using(StreamReader sd = File.OpenText(path))
                {
                    while(sd.ReadLine() != null)
                    {
                        Console.WriteLine(sd.ReadLine());
                    }
                }
            }
            //删除拷贝文件
            File.Copy(path,@"E:\FileOperaterCopy.txt");
            File.Delete(path);
        }
        /// <summary>
        /// FileStream 读取文件
        /// </summary>
        private static void StreamFileOperate()
        {
            if(File.Exists(path))
            {
                File.Delete(path);
            }
            //打开文件()  ,或通过File创建立如:fs = File.Create(path, 1024)
            FileStream fs = new FileStream(path, FileMode.CreateNew);
            //转换为字节 写入数据(可写入中文)
            Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
            fs.Write(info,0,info.Length);
            fs.Close();
            //打开文件
            fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            //读取文件
            BinaryReader r = new BinaryReader(fs);
            for (int i = 0; i < info.Length; i++) 
            {
                Console.WriteLine(r.ReadChar());
            }
            fs.Close();

        }