c# FileStream函数的FileMode参数中的其中一个枚举值OpenOrCreate的说明是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# FileStream函数的FileMode参数中的其中一个枚举值OpenOrCreate的说明是啥意思?相关的知识,希望对你有一定的参考价值。

=======================
指定操作系统应打开文件(如果文件存在);否则,应创建新文件。如果用 FileAccess.Read 打开文件,则需要
FileIOPermissionAccess.Read。如果文件访问为 FileAccess.Write 或 FileAccess.ReadWrite,则需要
FileIOPermissionAccess.Write。如果文件访问为 FileAccess.Append,则需要 FileIOPermissionAccess.Append。
==========================
这是OpenOrCreate的说明 后面那三个“如果”是什么意思?

如果用 FileAccess.Read 打开文件,则需要 FileIOPermissionAccess.Read权限。如果文件访问为 FileAccess.Write,则需要 FileIOPermissionAccess.Write权限。如果用 FileAccess.ReadWrite 打开文件,则同时需要 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.Write权限。
FileIOPermissionAccess有6个枚举,其中有三个是(就是这三种权限):

Read 从文件或目录中读取的访问权限。
Write 写入或删除文件或目录的访问权限。Write 访问权限包括对文件和目录的删除和覆盖。
Append 向文件或目录追加内容的访问权限。Append 访问权限包括创建新的文件和目录的能力。追问

那怎样获得FileIOPermissionAccess.Write和FileIOPermissionAccess.Read权限

追答

有些是不需要你来获得权限的,因为本来就没有参数,如新创一个filestream对象:FileStream s2 = new FileStream(name, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
但是有些需要:FileIOPermission.SetPathList 方法 (FileIOPermissionAccess, String)
例子:fileIOPerm1.SetPathList(FileIOPermissionAccess.Write, "C:\\documents");

参考技术A 如果用 FileAccess.Read 打开文件,则需要 FileIOPermissionAccess.Read权限。如果文件访问为 FileAccess.Write,则需要 FileIOPermissionAccess.Write权限。如果用 FileAccess.ReadWrite 打开文件,则同时需要 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.Write权限。
FileIOPermissionAccess有6个枚举,其中有三个是(就是这三种权限):
Read 从文件或目录中读取的访问权限。
Write 写入或删除文件或目录的访问权限。Write 访问权限包括对文件和目录的删除和覆盖。
Append 向文件或目录追加内容的访问权限。Append 访问权限包括创建新的文件和目录的能力。
参考技术B FileAccess.Read 表示打开进行读操作
FileAccess.Write 或 FileAccess.ReadWrite 表示打开进行写或读写操作
FileAccess.Append 表示打开进行附加操作
OpenOrCreate表示打开文件如果文件不存在就创建

C#中的IO流操作(FileStream)

StreamReader和StreamWriter适用于对文本文件的操作,因为它是以字符为单位进行的操作

不用担心编码问题

            using (Stream s = new FileStream(@"C:\Users\qq\Desktop\新建文件夹\HTML\qq.txt", FileMode.Open, FileAccess.Read))
            using (StreamReader r = new StreamReader(s, Encoding.Default))  //读取流中的文本
            {
                string str;
                while ((str = r.ReadLine()) != null) //每次读取一行,当读取的内容为null是,读取完成
                {
                    Console.WriteLine(str);
                }
            }

  

FileStream 
他是以字节对文件的读写操作的
    using (Stream s = new FileStream(@"C:\Users\qq\Desktop\新建文件夹\HTML\qq.txt", FileMode.Open))
            using (Stream w = new FileStream(@"C:\Users\qq\Desktop\新建文件夹\HTML\yzk.txt", FileMode.Create))
            {
               // s.CopyTo(w); //复制文件

                byte[] b = new byte[10];

                int len = 0;
                while ((len = s.Read(b, 0, b.Length)) > 0)  //每次读取的数据放到b数组中
                {
                    //Console.WriteLine(Encoding.Default.GetString(b,0,b.Length));
                    w.Write(b, 0, b.Length); //把数组中的数据写入新的文件中
                }
            }

 

以上是关于c# FileStream函数的FileMode参数中的其中一个枚举值OpenOrCreate的说明是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

C# 使用从 FileStream 创建的 StreamWriter 覆盖文件

C#中的IO流操作(FileStream)

ASP.NET 使用 FileStream (FileMode.Open) 读取 xml -> System.UnauthorizedAccessException

FileStream说明

C# 数组快速读取和写入

C# 中的Stream流