广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >C#文件读写操作 [详细]
  • 555
分享到

C#文件读写操作 [详细]

c#开发语言java 2023-09-09 06:09:22 555人浏览 泡泡鱼
摘要

C#文件读写操作 C# 中的 I/O 类FileStream 类C#中文本文件的读取写入1) StreamReader2) StreamWriter 二进制文件读写1) BinaryRe

C#文件读写操作

文件是存储在磁盘中的具有特定名称和目录路径的数据集合,当我们使用程序对文件进行读取或写入时,程序会将文件以数据流(简称流)的形式读入内存中。我们可以将流看作是通过通信路径传递的字节序列,流主要分为输入流和输出流,输入流主要用于从文件读取数据(读操作),输出流主要用于向文件中写入数据(写操作)。

C# 中的 I/O 类

System.io 命名空间中包含了各种用于文件操作的类,例如文件的创建、删除、读取、写入等等。如下表中所示:

I/O 类描述
BinaryReader从二进制流中读取原始数据
BinaryWriter以二进制格式写入原始数据
BufferedStream临时存储字节流
Directory对目录进行复制、移动、重命名、创建和删除等操作
DirectoryInfo用于对目录执行操作
DriveInfo获取驱动器的信息
File对文件进行操作
FileInfo用于对文件执行操作
FileStream用于文件中任何位置的读写
MemoryStream用于随机访问存储在内存中的数据流
Path对路径信息执行操作
StreamReader用于从字节流中读取字符
StreamWriter用于向一个流中写入字符
StringReader用于从字符串缓冲区读取数据
StringWriter用于向字符串缓冲区写入数据

FileStream 类

FileStream 类在 System.IO 命名空间下,使用它可以读取、写入和关闭文件。创建 FileStream 类对象的语法格式如下所示:

FileStream <object_name> = new FileStream(<file_name>, <FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

参数说明如下:
object_name:创建的对象名称;

file_name:文件的路径(包含文件名在内);

FileMode:枚举类型,用来设定文件的打开方式,可选值如下:

Append:打开一个已有的文件,并将光标放置在文件的末尾。如果文件不存在,则创建文件;

Create:创建一个新的文件,如果文件已存在,则将旧文件删除,然后创建新文件;

CreateNew:创建一个新的文件,如果文件已存在,则抛出异常;

Open:打开一个已有的文件,如果文件不存在,则抛出异常;

OpenOrCreate:打开一个已有的文件,如果文件不存在,则创建一个新的文件并打开;

Truncate:打开一个已有的文件,然后将文件清空(删除原有内容),如果文件不存在,则抛出异常。

FileAccess:枚举类型,用来设置文件的存取,可选值有 Read、ReadWrite 和 Write;

FileShare:枚举类型,用来设置文件的权限,可选值如下:

Inheritable:允许子进程继承文件句柄,Win32 不直接支持此功能;

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

Read:允许随后打开文件读取,如果未指定此标志,则文件关闭前,任何打开该文件以进行读取的请求都将失败,需要注意的是,即使指定了此标志,仍需要附加权限才能够访问该文件;

ReadWrite:允许随后打开文件读取或写入,如果未指定此标志,则文件关闭前,任何打开该文件以进行读取或写入的请求都将失败,需要注意的是,即使指定了此标志,仍需要附加权限才能够访问该文件;

Write:允许随后打开文件写入,如果未指定此标志,则文件关闭前,任何打开该文件以进行写入的请求都将失败,需要注意的是,即使指定了此标志,仍可能需要附加权限才能够访问该文件;

Delete:允许随后删除文件。

例如,我们创建一个 FileStream 对象 F 来读取一个名为 sample.txt 的文件,示例代码如下所示:
FileStream F = new FileStream(“sample.txt”, FileMode.Open, FileAccess.Read, FileShare.Read);

FileStream 类中的常用方法如下所示:

方法描述
Close()关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)
CopyTo(Stream)从当前流中读取字节并将其写入到另一流中
Dispose()释放由 Stream 使用的所有资源
Equals(Object)判断指定对象是否等于当前对象
Finalize()确保垃圾回收器回收 FileStream 时释放资源并执行其他清理操作
Flush()清除此流的缓冲区,使得所有缓冲数据都写入到文件中
GetHashCode()默认哈希函数
GetType()获取当前实例的 Type
Lock(Int64, Int64)防止其他进程读取或写入 FileStream
Read(Byte[], Int32, Int32)从流中读取字节块并将该数据写入给定缓冲区中
ReadByte()从文件中读取一个字节,并将读取位置提升一个字节
ToString()返回表示当前对象的字符串
Unlock(Int64, Int64)允许其他进程访问以前定的某个文件的全部或部分
Write(Byte[], Int32, Int32)将字节块写入文件流
WriteByte(Byte)将一个字节写入文件流中的当前位置

【示例】使用 FileStream 类读取指定的文件:

using System;using System.IO;namespace c.biancheng.net{    class Demo    {        static void Main(string[] args)         {            FileStream file = new FileStream("test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);            for(int i = 0; i < 20; i++){                file.WriteByte((byte)i);            }            file.Position = 0;            for(int i = 0; i < 20; i++){                Console.Write(file.ReadByte() + " ");            }            file.Close();            Console.ReadKey();        }    }}

运行结果:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

C#中文本文件的读取写入

System.IO 命名空间下的 StreamReader 和 StreamWriter 类可以用于文本文件的数据读写。这些类继承自抽象基类 Stream,Stream 类提供了对文件流读写的功能。

1) StreamReader

StreamReader 类继承自抽象基类 TextReader,用来从文件中读取一系列字符,下表列出了 StreamReader 类中一些常用的方法:

方法描述
public override void Close()关闭 StreamReader 对象和基础流,并释放任何与之相关的系统资源
public override int Peek()返回下一个可用的字符,但不使用它
public override int Read()从输入流中读取下一个字符,并把字符位置往前移一个字符

如果想查阅完整的方法列表,可以访问官方API

【示例】使用 StreamReader 读取指定文件的内容,文件的内容如下所示:

薪薪代码
你好
C# 教程

示例代码如下:

using System;using System.IO;namespace c.biancheng.net{    class Demo    {        static void Main(string[] args)         {            try{                // 创建 StreamReader 类的对象                StreamReader file = new StreamReader("test.txt");                string line;                // 从文件中读取内容                while((line = file.ReadLine()) != null){                    Console.WriteLine(line);                }            }catch(Exception e){                // 展示出错信息                Console.WriteLine("无法读取文件");                Console.WriteLine(e.Message);            }            Console.ReadKey();        }    }}

运行上述代码即可输出文件中的内容。

2) StreamWriter

StreamWriter 类同样继承自抽象类 TextWriter,用来向文件中写入一系列字符,下表列出了 StreamWriter 类中一些常用的方法:

方法描述
public override void Close()关闭当前的 StreamWriter 对象和基础流
public override void Flush()清理当前所有的缓冲区,使所有缓冲数据写入基础流
public virtual void Write(bool value)将布尔值的文本表示形式写入文本流
public override void Write(char value)将一个字符写入流
public virtual void Write(decimal value)将一个小数值的文本表示形式写入文本流
public virtual void Write(double value)将一个 8 字节浮点值的文本表示形式写入文本流
public virtual void Write(int value)将一个 4 字节有符号整数的文本表示形式写入文本流
public override void Write(string value)将一个字符串写入文本流
public virtual void WriteLine()将行结束符写入文本流

完整的方法列表请查阅官方API

【示例】向文件中写入指定内容。

using System;using System.IO;namespace c.biancheng.net{    class Demo    {        static void Main(string[] args)         {            // 要写入文件中的数据            string[] str = new string[]{                "薪薪代码",                "你好",                "C# 教程"            };            // 创建 StreamWriter 类的对象            StreamWriter file = new StreamWriter("demo.txt");            // 将数组中的数据写入文件            foreach(string s in str){                file.WriteLine(s);            }            file.Close();            // 读取文件中的内容            string line = "";            StreamReader readfile = new StreamReader("demo.txt");            while((line = readfile.ReadLine()) != null){                Console.WriteLine(line);            }            readfile.Close();            Console.ReadKey();        }    }}

运行结果如下:

薪薪代码你好C# 教程

二进制文件读写

C# 中的 BinaryReader 和 BinaryWriter 类可以用于二进制文件的读写。

1) BinaryReader 类

BinaryReader 类用于从文件读取二进制数据,类中的常用方法如下所示:

方法描述
public override void Close()关闭 BinaryReader 对象和基础流
public virtual int Read()从基础流中读取字符,并根据所使用的编码和从流中读取的特定字符,将流的当前位置前移
public virtual bool ReadBoolean()从当前流中读取一个布尔值,并将流的当前位置前移一个字节
public virtual byte ReadByte()从当前流中读取下一个字节,并将流的当前位置前移一个字节
public virtual byte[] ReadBytes(int count)从当前流中读取指定数目的字节到一个字节数组中,并将流的当前位置前移指定数目的字节
public virtual char ReadChar()从当前流中读取下一个字节,并把流的当前位置按照所使用的编码和从流中读取的指定的字符往前移
public virtual char[] ReadChars(int count)从当前流中读取指定数目的字符,并以字符数组的形式返回数据,并把流的当前位置按照所使用的编码和从流中读取的指定的字符往前移
public virtual double ReadDouble()从当前流中读取一个 8 字节浮点值,并把流的当前位置前移八个字节
public virtual int ReadInt32()从当前流中读取一个 4 字节有符号整数,并把流的当前位置前移四个字节
public virtual string ReadString()从当前流中读取一个字符串,字符串以长度作为前缀,同时编码为一个七位的整数

完整的方法列表请查阅 官方API

2) BinaryWriter 类

BinaryWriter 类用于向文件写入二进制数据,类中的常用方法如下表所示:

方法描述
public override void Close()关闭 BinaryWriter 对象和基础流
public virtual void Flush()清理当前编写器的所有缓冲区,使得所有缓冲数据写入基础设备
public virtual long Seek(int offset,SeekOrigin origin)设置当前流中的位置
public virtual void Write(bool value)将一个字节的布尔值写入到当前流中,0 表示 false,1 表示 true
public virtual void Write(byte value)将一个无符号字节写入到当前流中,并把流的位置前移一个字节
public virtual void Write(byte[] buffer)将一个字节数组写入到基础流中
public virtual void Write(char ch)将一个 Unicode 字符写入到当前流中,并把流的当前位置按照所使用的编码和要写入到流中的指定字符往前移
public virtual void Write(char[] chars)将一个字符数组写入到当前流中,并把流的当前位置按照所使用的编码和要写入到流中的指定字符往前移
public virtual void Write(double value)将一个 8 字节浮点值写入到当前流中,并把流位置前移八个字节
public virtual void Write(int value)将一个 4 字节有符号整数写入到当前流中,并把流位置前移四个字节
public virtual void Write(string value)将一个有长度前缀的字符串按 BinaryWriter 的当前编码写如到流中,并把流的当前位置按照所使用的编码和要写入到流中的指定字符往前移

完整的方法列表请查阅官方API

【示例】下面通过示例演示二进制文件的读取和写入:

using System;using System.IO;namespace c.biancheng.net{    class Demo    {        static void Main(string[] args)         {            BinaryWriter bw;            BinaryReader br;            int i = 520;            double d = 3.14159;            bool b = true;            string s = "薪薪代码";            // 创建文件            try{                bw = new BinaryWriter(new FileStream("mydata", FileMode.Create));            }catch (IOException e){                Console.WriteLine(e.Message + "\n 文件创建失败!");                return;            }            // 写入文件            try{                bw.Write(i);                bw.Write(d);                bw.Write(b);                bw.Write(s);            }catch (IOException e){                Console.WriteLine(e.Message + "\n 文件写入失败!");            }            bw.Close();            // 读取文件            try{                br = new BinaryReader(new FileStream("mydata", FileMode.Open));            }catch (IOException e){                Console.WriteLine(e.Message + "\n 文件打开失败!");                return;            }            try{                i = br.ReadInt32();                Console.WriteLine("Integer data: {0}", i);                d = br.ReadDouble();                Console.WriteLine("Double data: {0}", d);                b = br.ReadBoolean();                Console.WriteLine("Boolean data: {0}", b);                s = br.ReadString();                Console.WriteLine("String data: {0}", s);            }catch (IOException e){                Console.WriteLine(e.Message + "\n 文件读取失败!.");            }            br.Close();            Console.ReadKey();        }    }}

运行结果:

Integer data: 520Double data: 3.14159Boolean data: TrueString data:薪薪代码

来源地址:https://blog.csdn.net/m0_65636467/article/details/129116475

--结束END--

本文标题: C#文件读写操作 [详细]

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#文件读写操作 [详细]
    C#文件读写操作 C# 中的 I/O 类FileStream 类C#中文本文件的读取写入1) StreamReader2) StreamWriter 二进制文件读写1) BinaryRe...
    99+
    2023-09-09
    c# 开发语言 java
  • C++文件读写操作详解
    目录一、读写文本文件1.1 写文件1.2读文件二、读写二进制文件2.1 写文件2.2 读文件一、读写文本文件 1.1 写文件 写文件步骤如下: 包含头文件 #include <...
    99+
    2022-11-13
  • C++文件流读写操作详解
    目录1.打开文件1.1 fstream类型1.2 open()的函数原型1.3 打开方式1.4 打开文件的属性1.5 示例代码2.文本文件的读写2.1 写文件示例2.2 读文件示例2...
    99+
    2022-11-12
  • Java详细讲解文件的读写操作方法
    目录java的IO字节流InputStream的常用方法OutputStream的常用方法字节流读写文件如何将数据写入到文件中java的IO Java程序允许通过流的方式与输入输出设...
    99+
    2022-11-13
  • 详细解读python操作json文件的详细
    目录json支持的格式:代码操作1.json转化为python2. python序列化为json总结 json转化为python表示反序列化 python转化为json表示为序列...
    99+
    2022-11-12
  • JAVA文件读写操作详解
    目录一、读文件BufferedInputStream二、写文件BufferedOutputStream三、实际应用场景总结一、读文件BufferedInputStream Buffe...
    99+
    2022-11-13
  • Golang文件读写操作详情
    目录一、概念二、读取文件操作2.1 打开和关闭文件defer 语句2.2 file.Read() 读取文件Read 方法定义ReadAt方法定义一次性读取循环读取2.3 bufio ...
    99+
    2022-11-13
  • JavaZip文件读写操作详解
    输入流(读取): ZipInputStream是一种FileInputStream流,它可以直接读取Zip压缩包的内容: ┌───────────────────┐│   ...
    99+
    2022-11-13
    Java Zip文件读取 Java Zip文件写入
  • C++文件操作,超级详细
    目录 常用的文件操作方式:打开文件打开方式参数以只读方式打开文件以只写方式打开文件以追加方式打开文件文件流迭代器 常用的文件操作方式: FILE 结构体:FILE 结构体是 C 语言中...
    99+
    2023-10-18
    c++ ios 开发语言
  • C#读写xml文件方法总结(超详细!)
    目录C#写入xml文件1、XmlDocument2、DataSet对象里的值来生成XML文件3、利用XmlSerializer来将类的属性值转换为XML文件的元素值。示例:写入xml...
    99+
    2023-02-21
    c#读写xml文件 c# 读xml c#读取xml文件教程
  • Node.js Streams文件读写操作详解
    Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务。如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream)。因此,我们先具体看看流,理解一下它们是怎么简...
    99+
    2022-06-04
    详解 操作 文件
  • PythonYAML文件的读写操作详解
    目录YAML格式YAML文件YAML操作读取存储示例转字典转列表YAML是一种数据序列化格式,方便人类阅读,且容易和脚本语言交互。常用于配置文件,也用于数据存储或传输。 YAML格式...
    99+
    2022-11-11
  • 如何在 Python 中进行文件读写操作?详细解析!
    Python 是一门强大的编程语言,它不仅可以用于数据分析、机器学习等领域,还可以用来处理文件读写操作。在本文中,我们将详细介绍如何在 Python 中进行文件读写操作,并且提供一些有用的代码示例。 文件的读取操作 在 Python 中,我...
    99+
    2023-06-28
    关键字 编程算法 文件
  • java进行文件读写操作详解
    在Java中,文件读写操作可以使用Java的输入/输出流(IO)类来实现。Java提供了多种IO类来进行文件读写操作,包括字节流和字...
    99+
    2023-09-14
    java
  • Python读写JSON文件的操作详解
    目录JSONJSON 起源JSON 样例Python 原生支持 JSON序列化 JSON简单的序列化示例JSON 反序列化简单的反序列化示例应用案例编码和解码JSON JSON 起源...
    99+
    2022-11-10
  • Pandas对CSV文件读写操作详解
    目录什么是 CSV 文件CSV 库解析 CSV 文件读取 CSV 文件CSV reader 参数CSV 文件的写入使用 pandas 库解析 CSV 文件pandas 读取 CSV ...
    99+
    2022-11-10
  • java文件读写操作实例详解
    目录File类File类的构造方法创建功能判断获取删除IO流字节流写数据小问题总结File类 它是文件和目录路径名的抽象表示。 文件和目录是可以通过File封装成对象的。 对于Fil...
    99+
    2022-11-13
  • C++文件IO流及stringstream流读写文件和字符串操作详解
    目录一、引入二、自定义类型隐式类型转换三、sync_with_stdio同步四、文件IO流4.1 open和close文件4.2 写入文件与读出文件五、stringstream流的使...
    99+
    2023-05-17
    C++文件IO流 C++ stringstream流
  • C#使用StreamReader和StreamWriter类读写操作文件
    StreamReader 类 (System.IO) | Microsoft 官方文档 StreamWriter 类 (System.IO) | Microsoft 官方文档 一、文...
    99+
    2022-11-13
  • python读写删除复制文件操作方法详细实例总结
    python读文件操作 1. read三种不同的方式 f = open('hello.txt') #'hello.txt'指的是文件的名称 while True: text ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作