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日

相关文章

  • 生成代码从T到T1、T2、Tn自动生成多个类型的泛型实例代码

    生成代码从 T 到 T1、T2、Tn 可以采用泛型实现,这要求在代码的编写中加入范型的参数和返回类型,并在程序运行时通过传入的不同类型参数自动生成多个类型的泛型实例代码。 具体实现步骤如下: 在代码中声明一个泛型方法,该方法中使用泛型参数 T 作为数据类型的占位符,以代表传入参数的类型。示例代码如下: public static <T> void…

    C# 2023年6月6日
    00
  • C#如何优雅的对WinForm窗体应用程序进行权限控制

    C#中对WinForm窗体应用程序进行权限控制的优雅方法主要有以下几个步骤: 1. 创建用户登录界面 在用户打开程序时,首先需要提供一个登录窗口,将用户的账号和密码发送给服务器验证。可以使用WinForm中的TextBox、Label和Button等工具来创建这个窗口。 2. 向接口获取用户权限信息 用户登录成功后,需要将用户的身份信息发送给服务器来获取用户…

    C# 2023年5月31日
    00
  • asp.net C#实现下载文件的六种方法实例

    下面是详细讲解“asp.net C#实现下载文件的六种方法实例”的完整攻略: 1. 使用Response.TransmitFile方法实现下载文件 在ASP.NET中,使用Response对象较常见地实现文件的下载。其中,使用Response.TransmitFile方法可以直接将文件传输出去,下载速度较快。代码如下: protected void BtnD…

    C# 2023年6月1日
    00
  • C# LINQ的基本使用方法示例

    关于C# LINQ的基本使用方法示例,以下是完整攻略: 什么是LINQ LINQ(Language Integrated Query,语言集成查询)是微软在.NET Framework 3.5中推出的一项新特性,它能够使得.NET语言(如C#)可以进行通用的查询操作,包括数据的筛选、排序、分组以及聚合等等,而且支持查询对象是非常丰富的,包含了各种数据集合、O…

    C# 2023年6月1日
    00
  • C#中事件的继承实例分析

    关于C#中事件的继承实例分析的攻略,我将从以下几个方面进行详细讲解: C#事件的基础知识概述 C#中事件的继承实例分析的具体操作步骤 两个C#中事件继承实例的示例说明 1. C#事件的基础知识概述 在C#中,事件是一种特殊的委托,它允许类或对象在特定的时候产生通知或者响应。事件通常用于编写GUI应用程序、多线程程序以及其他需要交互的程序中。在C#中,事件定义…

    C# 2023年5月31日
    00
  • ASP 处理JSON数据的实现代码

    ASP(Active Server Pages)是类似于PHP的一种动态服务器端脚本语言,在ASP中实现JSON数据处理需要使用到一些相关的类库。 处理JSON数据的基本流程如下: 客户端通过HTTP请求将JSON数据发送到服务器端 服务器端的ASP代码接收JSON数据,并通过相关类库解析JSON数据成为一个可操作的对象 服务器端的ASP代码对解析后的JSO…

    C# 2023年5月31日
    00
  • c#入门之分支语句使用方法(三元运算符、if语句、switch语句)

    C#入门之分支语句使用方法 在C#中,分支语句可以根据不同的条件执行不同的程序代码块。本文将介绍三种常用的分支语句,包括三元运算符、if语句、switch语句,并提供相应的示例。 三元运算符 三元表达式是一种紧凑的if语句形式,它可以用单行代码代替if-else语句。它的格式如下: result = condition ? expressionIfTrue …

    C# 2023年6月7日
    00
  • C#6.0中你可能不知道的新特性总结

    C#6.0是微软在2015年发布的新版本,增加了不少新特性。本文将对C#6.0中一些可能被忽略的新特性进行总结和分享。 1. 自动属性初始值设定 在C#6.0引入了自动属性初始值设定,开发者可以为属性提供一个初始值,而不必在构造函数中进行设置。这种方式可以更加方便快捷地编写C#代码。 示例: public class Person { public stri…

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