返回顶部
首页 > 资讯 > 后端开发 > Python >3-4 文件流类FileStream
  • 200
分享到

3-4 文件流类FileStream

文件FileStream 2023-01-31 06:01:39 200人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

3-2  文件流类FileStream u本节学习目标: nFileStream文件流类 nFileStream文件流类的创建 nFileMode和FileAccess,FileShare方法基本介绍

3-2  文件流类FileStream

u本节学习目标:

nFileStream文件流类
nFileStream文件流类的创建
nFileMode和FileAccess,FileShare方法基本介绍及注意事项
用File类提供的方法在创建或打开文件时,总是会产生一个FileStream对象。类FileStream是个什么样的类?通过它的对象,怎样完成对文件的操作呢?

1.FileStream文件流类简介

FileStream对象,也称为文件流对象,为文件的读写操作提供通道,而File对象相当于提供一个文件句柄,在文件操作中,针对FileStream对象的操作必须首先实例化一个FileStream类对象后才可以使用,这一点与File类的操作是不一样的。
FileStream类在实例后可以用于读写文件中的数据,而要构造FileStream实例,需要以下4条信息:
n要访问的文件。

n表示如何打开文件的模式。例如,创建一个新文件或打开一个现有的文件。如果打开一个现有的文件,写入操作是覆盖文件原来的内容,还是添加到文件的末尾?

n表示访问文件的方式—— 是只读、只写,还是读写?

n共享访问——表示是否独占访问文件。如果允许其他流同时访问文件,则这些流是只读、只写,还是读写文件?

2.FileStream文件流类的创建

创建FileStream对象的方式不是单一的,除了用File对象的Create()方法或Open()方法外,也可以采用FileStream对象的构造函数。基本创建文件流对象的方法如下:
(1)使用File对象的Create方法
       FileStream mikecatstream;

       mikecatstream = File.Create("c:\\mikecat.txt");

   //本段代码的含义:

   //利用类File的Create()方法在C:根目录下创建文件mikecat.txt,并把文件流赋给mikecatstream

(2) 使用File对象的Open方法,

      FileStream mikecatstream;

      mikecatstream = File.Open("c:\\mikecat.txt", FileMode.OpenOrCreate, FileAccess.Write);

      //本段代码的含义:

  //利用类File的Open()方法打开在C:根目录下的文件mikecat.txt,打开的模式为打开或创建,对文件的访问形式为只写,并把文件流赋给mikecatstream。

(3) 使用类FileStream的构造函数,

    FileStream mikecatstream;

    mikecatstream = new FileStream("c:\\mikecat.txt", FileMode.OpenOrCreate, FileAccess.Write);

    //本段代码的含义:

    //利用类FileStream的构造函数打开在C:根目录下的文件mikecat.txt,打开的模式为打开或创建,对文件的访问形式为只写,并把文件流赋给mikecatstream。

类FileStream的构造函数提供了15种重载,最常用的有3种,如表3-8所示:
表3-8 类FileStream的3种常用的构造函数

名称

说明

FileStream(string FilePath, FileMode)

使用指定的路径和创建模式初始化 FileStream 类的新实例。

FileStream(string FilePath, FileMode, FileAccess)

使用指定的路径、创建模式和读/写权限初始化 FileStream 类的新实例。

FileStream(string FilePath, FileMode, FileAccess, FileShare)

使用指定的路径、创建模式、读/写权限和共享权限创建 FileStream 类的新实例。

在构造函数中使用的 FilePath, FileMode, FileAccess, FileShare分别是指:使用指定的路径、创建模式、读/写权限和共享权限。其中FilePath:将封装的文件的相对路径或绝对路径。
下面介绍一下FileMode和FileAccess,FileShare。它们三个都是System.io命名空间中的枚举类型。如表3-9所示:
表3-9 枚举类型FileMode和FileAccess,FileShare

名称

取值

说明

FileMode

Append、Create、CreateNew、Open、OpenOrCreate和Truncate

指定操作系统打开文件的方式。

FileAccess

Read、ReadWrite和Write

定义用于控制对文件的读访问、写访问或读/写访问的常数。

FileShare

Inheritable、None、Read、ReadWrite和Write

包含用于控制其他 FileStream 对象对同一文件可以具有的访问类型的常数。

看下面的两个举例:

n小实验1:

FileStream fstream = new FileStream("Test.cs", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);

//本段代码的含义:

//利用类FileStream的构造函数打开当前目录下的文件Test.cs,打开的模式为打开或创建,对文/的访问形式为读写,共享模式为拒绝共享,并把文件流赋给fstream。

n小实验2:

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read);

//本段代码的含义:

//利用类FileStream的构造函数打开当前目录下的文件名为字符串name的文件,打开的模式为打开,对文件的访问形式为只读,共享模式为读共享,并把文件流赋给s2。

关于FileMode和FileAccess,FileShare这三个枚举类型值的含义,请参照表3-10、3-11、3-12所示:
表3-10 枚举类型FileMode枚举值的含义

成员名称

说明

Append

打开现有文件并查找到文件尾,或创建新文件。FileMode.Append 只能同 FileAccess.Write 一起使用。任何读尝试都将失败并引发 <ArgumentException>。 

Create

指定操作系统应创建新文件。如果文件已存在,它将被改写。这要求 <FileIOPermissionAccess.Write>。System.IO.FileMode.Create 等效于这样的请求:如果文件不存在,则使用 <CreateNew>;否则使用 <Truncate>。 

CreateNew

指定操作系统应创建新文件。此操作需要 FileIOPermissionAccess.Write。如果文件已存在,则将引发 IOException。

Open

指定操作系统应打开现有文件。打开文件的能力取决于 FileAccess 所指定的值。如果该文件不存在,则引发 System.IO.FileNotFoundException。

OpenOrCreate

指定操作系统应打开文件(如果文件存在);否则,应创建新文件。如果用 FileAccess.Read 打开文件,则需要 <FileIOPermissionAccess.Read>。如果文件访问为 FileAccess.Write 或 FileAccess.ReadWrite,则需要 FileIOPermissionAccess.Write。如果文件访问为 FileAccess.Append,则需要 <FileIOPermissionAccess.Append>。

Truncate

指定操作系统应打开现有文件。文件一旦打开,就将被截断为零字节大小。此操作需要 FileIOPermissionAccess.Write。试图从使用 Truncate 打开的文件中进行读取将导致异常。

表3-11 枚举类型FileAccess枚举值的含义

成员名称

说明

Read

对文件的读访问。可从文件中读取数据。同 Write 组合即构成读写访问权。

ReadWrite

对文件的读访问和写访问。可从文件读取数据和将数据写入文件。

Write

文件的写访问。可将数据写入文件。同 Read 组合即构成读/写访问权。

表3-12 枚举类型FileShare枚举值的含义

成员名称

说明

Delete

允许随后删除文件。

Inheritable

使文件句柄可由子进程继承。Win32 不直接支持此功能。

None

谢绝共享当前文件。文件关闭前,打开该文件的任何请求(由此进程或另一进程发出的请求)都将失败。 

Read

允许随后打开文件读取。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取的请求(由此进程或另一进程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。

ReadWrite

允许随后打开文件读取或写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取或写入的请求(由此进程或另一进程发出)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。

Write

允许随后打开文件写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行写入的请求(由此进程或另一进过程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。 

在打开文件产生文件流的时候,三种枚举类型的不同选值作为参数,会产生不同的操作效果。具体应用应根据实际需要定。
注意:

对于FileMode,如果要求的模式与文件的现有状态不一致,就会抛出一个异常。如果文件不存在,Append、Open和Truncate会抛出一个异常,如果文件存在,CreateNew会抛出一个异常。Create和OpenOrCreate可以处理这两种情况,但Create会删除现有的文件,创建一个新的空文件。FileAccess 和FileShare枚举是按位标志,所以这些值可以与C#的按位OR运算符|合并使用。

--结束END--

本文标题: 3-4 文件流类FileStream

本文链接: https://lsjlt.com/news/190060.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 3-4 文件流类FileStream
    3-2  文件流类FileStream u本节学习目标: nFileStream文件流类 nFileStream文件流类的创建 nFileMode和FileAccess,FileShare方法基本介绍...
    99+
    2023-01-31
    文件 FileStream
  • 3-4 文件读写例子(4)
           /// <summary>                 public void ReadTextFile(string filepath, out Int16 i, out string ...
    99+
    2023-01-31
    例子 文件
  • 3-4 文件读写例子(3)
    u实验步骤(4): 向FileOption.cs文件中添加代码如下: //==============================第二部分:类设计============================&...
    99+
    2023-01-31
    例子 文件
  • sqlserver关于filestream文件流、filetable文件表的总结
    个人理解: FileStream、Filetable和Oracle的外部表有点像,但又不完全像,相似点都是表中的实际数据存放在文件系统中,表只记录元数据。 Oracle外部表的数据存放在文件系统中,使用d...
    99+
    2024-04-02
  • 3-4 文件读写例子
    3-3  文件读写例子 u本节学习目标: n学习通过文件流FileStream打开文本文件、写入文本文件、设置文件属性、实施对文件的目录操作管理的基本方法 n学习文件对话框的基本操作方法 n学习通过文...
    99+
    2023-01-31
    例子 文件
  • 3-4 文件读写例子(2)
    //=========================第一部分:主界面功能设计============================= using System;...
    99+
    2023-01-31
    例子 文件
  • C#使用文件流FileStream和内存流MemoryStream操作底层字节数组byte[]
    一、Stream类概述 在.NET Framework中,文件和流是有区别的。 文件是存储在磁盘上的数据集,它具有名称和相应的路径。当打开一个文件并对其进行读/写时,该文件就称为流(...
    99+
    2024-04-02
  • 1-4 多文档界面处理(3)
    5. 通过类的属性进行数据传值     此次案例我们改变本节案例(1)数据传值的方法,通过建立类的属性将数据传递过去。   u 实验步骤(1):     为传值目标窗口Form3定义相关属性信息如下:...
    99+
    2023-01-31
    界面 文档
  • c#中怎么使用FileStream读写文件
    在C#中使用FileStream读写文件,可以按照以下步骤进行操作:1. 创建FileStream对象:首先需要创建一个FileSt...
    99+
    2023-09-13
    c# FileStream
  • 如何实现VB.NET文件流读、写类文件
    这篇文章主要介绍如何实现VB.NET文件流读、写类文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!VB.NET文件流代码:Option Explicit  Private m...
    99+
    2023-06-17
  • 云计算学习路线教程大纲课件:EXT2/3/4文件系统
    云计算学习路线教程大纲课件:EXT2/3/4文件系统:索引式文件系统====================================================================================Ex...
    99+
    2023-06-04
  • 流畅的 Python - 3. 文本与
    对于字符串,我们接触得挺多的。而编码问题,也不时令人头疼的。 由于一开始接触的就是 Python3,所以一些在 Python2 上的编码上的坑我没遇到,甚至在 Python3 上都很少遇到编码问题,因为 Python3 默认的编码是 ut...
    99+
    2023-01-31
    流畅 文本 Python
  • C#中怎么利用FileStream对文件进行操作
    C#中怎么利用FileStream对文件进行操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C# FileStream写文件的操作实例:///先导入命名空间:...
    99+
    2023-06-17
  • 4.python之文件处理
    在python中如果想对硬盘中的一个文件进行操作大概可以分为三步,它的流程如下:使用open函数打开一个文件句柄,并且赋值给一个变量。通过相应的文件句柄对指定的文件进行操作。操作完成后关闭文件,文件关闭后,会将文件内容写入到磁盘中。open...
    99+
    2023-01-31
    文件 python
  • C# 使用 Filestream 修改大文件指定位置数据
    目录前言操作步骤前言 C# 中读写文件常规流程 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, Fil...
    99+
    2024-04-02
  • emacs配置文件3
    Emacs配置文件3;;普通设置(setq inhibit-startup-message t);关闭起动时闪屏(setq visible-bell t);关闭出错时的提示声(show-paren-mode t);显示括号匹配;(set-d...
    99+
    2023-01-31
    配置文件 emacs
  • 3 Python文件操作
    open 以什么编码方式存储文件,就以什么编码方式打开 f = open('d:\模特主妇护士班主任.txt',encoding='utf-8') # 绝对路径打开 f.close() f = open('模特主妇护士班主任',enc...
    99+
    2023-01-31
    操作 文件 Python
  • 3-了解.json文件
    1、app.json的配置项下面是微信官方给出的一个json配置文件。{  "pages": [    "pages/index/index",    "pages/logs/index"  ],  "window": {    "navi...
    99+
    2023-01-31
    文件 json
  • 特种文件系统(3)
    9.3 tmpfs前几天闲来无事翻微薄,有人写道:“曾经偷情被游街,如今二奶喊干爹;曾经撞人忙救人,如今撞人再杀人;曾经私情偷着干,如今淫乱存U盘;曾经献血为扶伤,如今慈善越重洋;曾经相好牵肚肠,如今小三炫富忙;曾经摩托都挺酷,如今地铁都追...
    99+
    2023-01-31
    文件系统 特种
  • Linux的文件系统(3)
    本章学习目标: 掌握Linux下文件目录的属性 掌握Linux下的权限管理 掌握如何切换用户身份及权限委派       3.1文件系统简介 文件系统(File system)泛...
    99+
    2023-01-31
    文件系统 Linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作