C#使用FileStream对象读写文件

C#使用FileStream对象读写文件

什么是FileStream对象?

FileStream对象是用于在Windows操作系统上读写文件的类。通过该对象,我们可以方便地读取文件或将数据写入文件。

读取文件

使用FileStream构造函数打开文件

使用FileStream读取文件,需要在代码中使用FileStream类,可以使用FileStream构造函数打开文件,并读取所需的文件数据。具体流程如下:

using System.IO;
FileStream fs = new FileStream("sample.txt", FileMode.OpenOrCreate);

以上代码打开当前目录下的sample.txt文件。使用FileMode.OpenOrCreate指定文件打开方式。可以使用其他选项,例如:

  • FileMode.Create:若文件存在,则覆盖该文件;若文件不存在,则创建新文件。
  • FileMode.CreateNew:若文件存在,则创建失败;若文件不存在,则创建新文件。
  • FileMode.Open:若文件存在,则打开该文件;若文件不存在,则抛出异常FileNotFoundException。
  • FileMode.OpenOrCreate:若文件存在,则打开该文件;若文件不存在,则创建新文件。

代码说明:

  • fs:是一个FileStream实例,它被用于在后续的代码中对文件进行操作。
  • "sample.txt":文件名。
  • FileMode.OpenOrCreate:文件的打开方式。

使用FileStream.Read()读取文件数据

byte[] data = new byte[1024];
int bytesRead = fs.Read(data, 0, data.Length);

以上代码使用fs.Read()方法从文件读取数据。

代码说明:

  • data:包含读取的数据。
  • byte[1024]:读取的数据缓冲区大小。
  • bytesRead:实际读取的字节数。

关闭FileStream对象

使用FileStream对象后,需要显式地关闭该对象,以释放被它所占用的资源。可以使用以下代码进行关闭:

fs.Close();
fs.Dispose();

代码说明:

  • fs.Close():关闭FileStream对象。
  • fs.Dispose():释放所占用的资源。

写入文件

使用FileStream构造函数打开文件

使用FileStream写入文件,可以使用同样的FileStream构造函数打开文件。具体流程如下:

using System.IO;
FileStream fs = new FileStream("sample.txt", FileMode.OpenOrCreate);

以上代码打开当前目录下的sample.txt文件。同样可以使用其他FileMode选项,例如:

  • FileMode.Create:若文件存在,则覆盖该文件;若文件不存在,则创建新文件。
  • FileMode.CreateNew:若文件存在,则创建失败;若文件不存在,则创建新文件。
  • FileMode.Open:若文件存在,则打开该文件;若文件不存在,则抛出异常FileNotFoundException。
  • FileMode.OpenOrCreate:若文件存在,则打开该文件;若文件不存在,则创建新文件。

代码说明:

  • fs:是一个FileStream实例,它被用于在后续的代码中对文件进行操作。
  • "sample.txt":文件名。
  • FileMode.OpenOrCreate:文件的打开方式。

使用FileStream.Write()写入数据

byte[] data = Encoding.UTF8.GetBytes("Hello, World!");
fs.Write(data, 0, data.Length);

以上代码使用fs.Write()方法将数据写入文件。使用Encoding.UTF8.GetBytes()将字符串编码为字节。可以将任何字节流写入文件。

代码说明:

  • data:要写入文件的数据。
  • Encoding.UTF8.GetBytes("Hello, World!"):将字符串编码为byte[]类型。
  • fs.Write():将数据写入文件。

关闭FileStream对象

使用FileStream对象后,需要显式地关闭该对象,以释放被它所占用的资源。可以使用以下代码进行关闭:

fs.Close();
fs.Dispose();

代码说明:

  • fs.Close():关闭FileStream对象。
  • fs.Dispose():释放所占用的资源。

示例

读取文件

using System;
using System.IO;

namespace FileStreamDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (FileStream fileStream = new FileStream("sample.txt", FileMode.OpenOrCreate))
                {
                    byte[] buffer = new byte[fileStream.Length];
                    int bytesRead = fileStream.Read(buffer, 0, buffer.Length);

                    Console.WriteLine($"Read {bytesRead} bytes from file. Contents are:\n{Encoding.UTF8.GetString(buffer)}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadKey();
        }
    }
}

以上代码向控制台输出读取到的文件内容。

代码说明:

  • using (FileStream fileStream = new FileStream("sample.txt", FileMode.OpenOrCreate)):使用using语句创建了一个FileStream对象(在“读取文件”中已经介绍过)。使用该方法可以确保对FileStream对象资源的正确释放。
  • byte[] buffer = new byte[fileStream.Length]:创建一个byte[]类型的变量(buffer)来存储文件的数据,长度为文件长度。
  • int bytesRead = fileStream.Read(buffer, 0, buffer.Length):从文件流中读取数据并存储到字节数组中,返回实际读取的字节数。
  • Console.WriteLine($"Read {bytesRead} bytes from file. Contents are:\n{Encoding.UTF8.GetString(buffer)}"):将读取到的字节数、读取到的文件内容输出到控制台。

写入文件

using System;
using System.IO;
using System.Text;

namespace FileStreamDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (FileStream fileStream = new FileStream("sample.txt", FileMode.OpenOrCreate))
                {
                    string data = "Hello, World!";
                    byte[] buffer = Encoding.UTF8.GetBytes(data);

                    fileStream.Write(buffer, 0, buffer.Length);

                    Console.WriteLine("Data written to file.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadKey();
        }
    }
}

以上代码向文件中写入数据,并将字符串“Data written to file.”输出到控制台。

代码说明:

  • using (FileStream fileStream = new FileStream("sample.txt", FileMode.OpenOrCreate)):使用using语句创建了一个FileStream对象(在“写入文件”中已经介绍过)。使用该方法可以确保对FileStream对象资源的正确释放。
  • string data = "Hello, World!":创建字符串类型的变量data,并赋值。
  • byte[] buffer = Encoding.UTF8.GetBytes(data):使用Encoding.UTF8.GetBytes()方法将字符串编码为byte[]类型,存储到buffer中。
  • fileStream.Write(buffer, 0, buffer.Length):使用fileStream.Write()方法将buffer的内容写入文件中。
  • Console.WriteLine("Data written to file."):将字符串“Data written to file.”输出到控制台。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用FileStream对象读写文件 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)

    获取机器硬件信息是一个常见的需求,特别是在系统监控和性能优化的场景下。ASP.NET提供了多种方法来获取机器硬件信息,包括CPU频率、磁盘可用空间、内存容量等。 以下是获取机器硬件信息的完整攻略。 1. 获取CPU频率 获取CPU频率可以通过System.Management命名空间中的ManagementObject类来实现。具体代码如下: using S…

    C# 2023年6月3日
    00
  • ASP.NET编程简单实现生成静态页面的方法【附demo源码下载】

    为了更好地讲解“ASP.NET编程简单实现生成静态页面的方法”,我们需要分为以下几个部分进行详细讲解: 为什么需要生成静态页面? 静态页面生成的基本思路和流程 实现过程和示例说明 1. 为什么需要生成静态页面? 当我们访问一个网站时,实际上每一次访问都需要服务器去动态生成页面并将结果返回给浏览器。但是,当网站的访问量很大时,频繁地动态生成页面会极大地消耗服务…

    C# 2023年5月31日
    00
  • C# 如何生成 DataMatrix 格式的二维码

    为了生成 DataMatrix 格式的二维码,我们可以使用 C# 中的 QrCode.Net 库。下面是完整的攻略: 1. 安装 QrCode.Net 库 在 Visual Studio 中,打开工具菜单,选择 NuGet 包管理器,搜索 QrCode.Net 并安装。 2. 导入命名空间 在需要生成二维码的代码文件中,导入 QrCode.Net 命名空间。…

    C# 2023年6月6日
    00
  • C#控制台程序中使用官方依赖注入的实现

    下面是关于“C#控制台程序中使用官方依赖注入的实现”的完整攻略,包含两个示例。 1. 什么是依赖注入 依赖注入(Dependency Injection,简称DI)是一种设计模式,用于解耦组件之间的依赖关系。在依赖注入中,组件不再负责创建它所依赖的对象,而是将这个责任交给外部容器。这样可以使组件更加灵活、可测试和可维护。 2. 使用官方依赖注入 在.NET …

    C# 2023年5月15日
    00
  • C#事务处理(Execute Transaction)实例解析

    C#事务处理(Execute Transaction)实例解析 在C#开发中,事务处理常常用于保证数据库操作的原子性,确认一组操作要么全部成功,要么全部不成功。在本文中,我们将通过实例解析的方式来详细讲解C#事务处理的使用方法。 什么是事务处理? 在数据库操作中,事务处理是一种将多个操作作为一个不可分割的操作序列执行的机制。当多个操作被包含在一个事务中时,这…

    C# 2023年5月31日
    00
  • 利用WCF双工模式实现即时通讯

    下面是关于“利用WCF双工模式实现即时通讯”的完整攻略,包含两个示例。 1. 什么是WCF双工模式 WCF双工模式是一种WCF通信模式,它允许客户端和服务端之间进行双向通信。在WCF双工模式中,客户端和服务端都可以发送和接收消息,这使得WCF双工模式非常适合实现即时通讯。 2. 示例1:创建WCF服务 以下是一个示例,演示如何创建WCF服务: using S…

    C# 2023年5月15日
    00
  • C#连接Oracle数据库使用Oracle.ManagedDataAccess.dll

    首先,要使用C#连接Oracle数据库,需要引用Oracle.ManagedDataAccess.dll库,并且在代码中使用相应的命名空间。以下是使用Oracle.ManagedDataAccess.dll连接Oracle数据库的步骤: 步骤一:引用Oracle.ManagedDataAccess.dll文件 在Visual Studio中新建项目后,右键“…

    C# 2023年6月2日
    00
  • C#采用mouse_event函数实现模拟鼠标功能

    为了达到你需要的详细性,我将分为以下几个部分来讲解: 什么是mouse_event函数? 如何在C#中使用mouse_event函数? 示例说明 1. 什么是mouse_event函数? mouse_event 函数是一个Windows API,在Windows操作系统中常用于模拟鼠标点击、移动、滚轮滚动等鼠标相关的操作。该函数声明在 user32.dll中…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部