C# 一分钟浅谈:文件操作与文件流详解

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
云原生网关 MSE Higress,422元/月
简介: 【9月更文挑战第4天】在日常开发中,文件的读写是基本而重要的任务。C# 通过 `System.IO` 命名空间提供了多种工具,如 `FileStream`、`StreamReader` 和 `StreamWriter` 等,用于处理文件和流。本文从基础概念入手,详细介绍了这些类的使用方法,并讨论了常见错误及其避免策略,包括文件不存在、权限问题和文件被占用等。通过示例代码,展示了如何创建、读取文件以及进行二进制数据操作,并强调了异常处理和性能优化的重要性。掌握这些技巧对于提升编程能力至关重要。

在日常开发中,对文件进行读写是一项基本且重要的任务。C# 提供了多种方式来处理文件和流,包括但不限于 System.IO 命名空间下的类,如 FileStream, StreamReader, StreamWriter, BinaryReader, BinaryWriter 等。本文将从基础概念出发,逐步深入探讨这些类的使用方法,并指出一些常见的错误及其避免策略。
image.png

文件操作基础

创建和打开文件

示例代码:

using System;
using System.IO;

class FileOperations {
   
   
    static void Main() {
   
   
        string filePath = @"C:\temp\example.txt";

        // 使用 FileStream 打开文件
        using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) {
   
   
            byte[] info = new UTF8Encoding(true).GetBytes("Hello World!");
            fs.Write(info, 0, info.Length);
        }

        // 读取文件
        using (StreamReader sr = new StreamReader(filePath)) {
   
   
            String s = sr.ReadToEnd();
            Console.WriteLine("读取的内容: " {
   
   s});
        }
    }
}

错误处理

常见错误:

  • 文件不存在:尝试访问一个不存在的文件。
  • 权限问题:没有足够的权限去读写文件。
  • 文件被占用:文件正在被其他程序使用。

如何避免:

  • 在操作文件前检查文件是否存在。
  • 检查是否有足够的权限。
  • 尽量使用 using 语句确保文件正确关闭,防止资源泄露。

文件流操作

文件流的基本概念

FileStreamSystem.IO 命名空间中的一个类,用于创建或打开文件并提供对文件的原始字节流的访问。它支持对文件的读写操作。

使用示例

写入二进制数据

using System;
using System.IO;

class FileStreamExample {
   
   
    static void Main() {
   
   
        string filePath = @"C:\temp\binaryData.bin";
        byte[] data = {
   
   1, 2, 3, 4, 5};

        // 写入数据
        using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) {
   
   
            fs.Write(data, 0, data.Length);
        }

        // 读取数据
        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) {
   
   
            byte[] readData = new byte[5];
            fs.Read(readData, 0, 5);
            Console.WriteLine(BitConverter.ToString(readData));
        }
    }
}

错误处理与优化建议

  • 异常处理:总是包裹在 try-catch 块中,以便优雅地处理可能出现的任何异常。
  • 性能考虑:对于大文件的操作,应考虑使用缓冲区来提高效率。
  • 安全编码实践:避免硬编码文件路径,使用参数化查询或其他安全机制处理用户输入。

通过以上介绍,我们了解了 C# 中文件操作的基础知识以及如何利用 FileStream 类来进行更底层的文件流操作。掌握这些技巧对于任何希望提升自己编程技能的开发者来说都是必不可少的。

目录
相关文章
|
4月前
|
C#
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
67 0
|
10月前
|
存储 安全 编译器
C#中使用I/O文件流
流,即是二进制数值,文件和流 I/O(输入/输出)是指在存储媒介中传入或传出数据。在 .NET 中,System.IO命名空间包含允许以异步方式和同步方式对数据流和文件进行读取和写入操作的类型。这些命名空间还包含对文件执行压缩和解压缩的类型,以及通过管道和串行端口启用通信的类型。命名空间:System.IO程序集:System.Runtime.dll。
74 1
|
12月前
|
C#
使用C#进行文件操作
在许多应用程序中,文件操作是常见的任务之一。无论是读取文件内容、写入数据,还是创建、移动和删除文件,C# 编程语言都提供了强大且易于使用的文件操作功能。本篇博客将介绍如何使用C#来进行基本的文件操作。
60 0
|
NoSQL 定位技术 API
基于C#的ArcEngine二次开发29:GDB文件操作及异常处理(上)
基于C#的ArcEngine二次开发29:GDB文件操作及异常处理
基于C#的ArcEngine二次开发29:GDB文件操作及异常处理(上)
|
NoSQL C# 数据库
基于C#的ArcEngine二次开发29:GDB文件操作及异常处理(下)
基于C#的ArcEngine二次开发29:GDB文件操作及异常处理
C#编程-117:文件流FileStream类
C#编程-117:文件流FileStream类
115 0
C#编程-117:文件流FileStream类
C#编程-111:文件操作之获取基本信息
C#编程-111:文件操作之获取基本信息
C#编程-111:文件操作之获取基本信息
C#编程-110:文件操作File静态类
C#编程-110:文件操作File静态类
114 0
C#编程-110:文件操作File静态类
|
C#
30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集
30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集
115 0
30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集
C#(三十七)之基于流的文件操作(FileStream)
本篇内容记录了FileStream类属性和方法。
341 0
C#(三十七)之基于流的文件操作(FileStream)