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# 如何使用ajax请求

    在 C# 中使用 Ajax 实现异步请求数据 首先需要在 C# 工程中添加引用 System.Web.Extensions.dll,这个dll里面包含了我们所需要使用的一些Ajax相关的类。 接着,我们需要写一个WebForm页面,把需要异步请求数据的代码写在Page_Load事件中。 下面是示例代码: using System; using System.…

    C# 2023年6月1日
    00
  • .NET实现异步编程async和await

    下面我来详细讲解“.NET实现异步编程async和await”的完整攻略。 异步编程简介 在传统的同步编程中,程序会按照代码的顺序执行,当某个操作需要等待一定时间时,程序就必须等待这个操作完成后才能继续往下执行。这样会导致程序阻塞,影响程序的性能和用户体验。 相应地,异步编程则可以避免这些问题。异步编程可以让程序并行执行多个操作,在执行第一个操作的同时开始执…

    C# 2023年6月3日
    00
  • Net core中使用System.Drawing对上传的图片流进行压缩(示例代码)

    在.NET Core中,使用System.Drawing对上传的图片流进行压缩是一项常见的任务,它可以帮助您减小图片的大小并提高应用程序的性能。在本攻略中,我们将详细讲解如何使用System.Drawing对上传的图片流进行压缩,并提供两个示例说明。 步骤一:安装NuGet包 要使用System.Drawing对上传的图片流进行压缩,您需要安装以下NuGet…

    C# 2023年5月17日
    00
  • .net的socket异步通讯示例分享

    下面我将为您详细讲解“.NET的Socket异步通讯示例分享”的攻略。 一、什么是Socket异步通讯 在计算机网络中,Socket(套接字)是指一个可以收发信息的网络通信端点,常用于客户端与服务器之间的通信。异步通讯是指通讯双方在任何时候都可以独立地发送和接收消息,不需要等待对方的响应。 在.NET中,可以使用Socket类实现Socket异步通讯,它提供…

    C# 2023年5月31日
    00
  • 对C# 多态的理解

    对C#多态的理解 什么是多态 多态是定义在父类中的函数被子类继承之后,可以具有不同的实现方式的一种能力。C#中的多态主要有两种实现方式:重载和重写。 重载 重载是通过定义同名的方法,但拥有不同的参数列表,实现多态的一种方式。C#中的重载函数必须拥有不同的参数个数或参数类型,否则编译器无法识别。 下面是一个求两个整数和的函数Add的重载示例: public i…

    C# 2023年5月15日
    00
  • 基于C#实现图片合成功能

    非常感谢您对图片合成功能的关注。本站准备为您提供基于C#的图片合成功能完整攻略。下面我们将带领您详细了解如何实现这一功能。 步骤一:创建C#项目 首先,我们需要在 Visual Studio 中创建一个名为 ImageMerge 的C#项目作为我们的示例进行演示。 步骤二:引用命名空间 在使用图形处理命令前,请首先引用System.Drawing.Imagi…

    C# 2023年6月6日
    00
  • PHP中配置IIS7实现基本身份验证的方法

    在PHP中配置IIS7实现基本身份验证的方法如下: 打开IIS管理器,选择要配置身份验证的站点,右键选择“编辑权限”。 在“安全”选项卡中,单击“编辑”按钮,打开“权限”对话框。 在“权限”对话框中,单击“添加”按钮,添加一个新的用户或组。 在“选择用户、计算机、服务帐户或组”对话框中,输入要添加的用户或组的名称,单击“检查名称”按钮,确保名称正确。 单击“…

    C# 2023年5月15日
    00
  • jQuery 中使用JSON的实现代码

    在jQuery中使用JSON是一种常见的数据交换格式,它可以将JavaScript对象转换为字符串,以便在不同的应用程序之间进行传输和解析。本文将提供详解如何在jQuery中使用JSON的完整攻略,包括将JavaScript对象转换为JSON字符串、将JSON字符串转换为JavaScript对象、使用jQuery的ajax方法发送JSON数据等。同时,本文还…

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