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日

相关文章

  • C#多线程等待所有子线程结束的示例

    在C#中,多线程编程是常见的需求。其中,一个常见的问题是如何等待所有子线程结束。在本文中,我们将演示两个示例来解决这个问题。 示例一:使用Thread.Join方法 使用Thread.Join方法是一种常见的等待子线程完成的方式。以下是示例代码: public static void Main() { var threads = new List<Th…

    C# 2023年5月15日
    00
  • 微软框架.NET Framework是什么附net framework下载地址

    “微软框架.NET Framework”是用于微软Windows操作系统上的一个开发框架,它可以用来创建和运行各种类型的应用程序,包括Web应用程序、桌面应用程序、移动应用程序和游戏等。 .NET Framework的作用 .NET Framework可以提供以下几方面的支持: 执行和管理应用程序的内存,包括对象生命周期、垃圾收集和线程管理; 提供一组预定义…

    C# 2023年5月31日
    00
  • .Net WInform开发笔记(三)谈谈自制控件(自定义控件)

    针对“.Net WInform开发笔记(三)谈谈自制控件(自定义控件)”这篇文章,我来给您进行详细的讲解和说明。 一、文章简介及目的 该篇文章主要介绍自定义控件的基本概念和实现方法,旨在帮助读者了解自定义控件的开发流程和技巧,提高自己的WinForm控件开发能力。 二、文章内容分析 1.控件的基本结构和实现方法 作者首先讲解了控件的基本结构和实现方法,包括:…

    C# 2023年5月31日
    00
  • ASP.NET延迟调用或多次调用第三方Web API服务

    以下是“ASP.NET延迟调用或多次调用第三方WebAPI服务”的完整攻略: 什么是ASP.NET延迟调用或多次调用第三方WebAPI服务 在ASP.NET中,我们可以使用异步程技术来延调用或多次调用第三方WebAPI服务。这可以提高应用程序的性能和可伸缩性。 延迟调用第三WebAPI服务 以下延迟调用第三方WebAPI服务的步骤: 步骤1:创建HttpCl…

    C# 2023年5月12日
    00
  • .Net Core 中选项Options的具体实现

    .NET Core 中选项 Options 的具体实现 在 .NET Core 中,选项 Options 是一种用于配置应用程序的机制,它可以将配置数据注入到应用程序中的服务中。选项 Options 可以帮助我们更好地管理应用程序的配置数据,提高应用程序的可维护性和可扩展性。本攻略将详细讲解 .NET Core 中选项 Options 的具体实现,包括如何定…

    C# 2023年5月17日
    00
  • javascript KeyDown、KeyPress和KeyUp事件的区别与联系

    JavaScript中的KeyDown、KeyPress和KeyUp都是键盘事件,但它们有着不同的用途和特点。 1. KeyDown事件 当用户在页面中按下键盘上的任意一个键时,就会触发KeyDown事件。KeyDown事件可以同时捕获特殊键,例如Ctrl、Shift、Alt、Tab等,还可以捕获功能键(F1~F12)。 下面是一个演示用JS实现监听按键功能…

    C# 2023年6月7日
    00
  • asp.net(c#)两种随机数的算法,可用抽考题

    针对你提出的问题,我将详细讲解asp.net(c#)两种随机数的算法,并提供可供抽考题使用的示例。下面是我整理的完整攻略: 1.算法一:使用随机种子生成随机数 这种算法是最基本的随机数生成算法。该算法的原理是,使用系统提供的随机种子函数生成一个随机数种子,然后根据这个随机数种子和指定的最小值和最大值,使用Random类生成一个随机数。具体代码实现如下: //…

    C# 2023年6月3日
    00
  • ASP.NET Core Razor页面用法介绍

    ASP.NET Core Razor 页面是一种基于 Razor 模板引擎的视图引擎,它可以用于创建动态 Web 页面。以下是 ASP.NET Core Razor 页面用法介绍的完整攻略: 步骤一:创建 Razor 页面 在使用 Razor 页面之前,需要创建 Razor 页面。可以在 ASP.NET Core 项目中的 Pages 文件夹中创建 Razo…

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