IRONSOFTWAREHOME

C# 读写文件

C# 读取和写入文件

Tim Corey

24分34秒

C# 中的文件输入和输出 (I/O) 操作是许多软件应用程序的重要组成部分,允许开发人员高效地读取和写入文件。 无论您是存储数据、记录应用程序事件,还是处理大量文本或二进制数据,C# 都提供了强大的文件处理工具。 在 Tim Corey 的视频"C# 数据访问:文本文件"中,他详细介绍了这些文件操作,重点是如何使用文本文件进行数据存储和检索。 本文旨在总结 Tim 在视频中涉及的关键概念和技术,为您提供 C# 中文件 I/O 操作的实用见解。

简介

在 C# 中,文件输入和输出操作对于文本文件的读取和写入至关重要。 File类提供了静态方法来与现有文件交互或创建新文件。 StreamWriter通常用于读写文件。 StreamReader逐行读取文件,使您可以访问每一行文本或字符串数组。 您还可以使用while循环高效读取较大的文件。 StreamWriter类用于将数据写入文件,支持写入字符串和数组。 它可以用于将文本附加到现有文件或覆盖整个文件。像WriteText这样的方法可以轻松地在文本文件中进行数据操作。

这些操作通常在static void Main方法中执行,您在其中定义文件路径。 例如,您可以指定一个文件名并使用StreamWriter来写入单个字符串或整个字符串数组。 using语句确保在操作后正确关闭文件,防止资源泄漏。 StreamReader也可以用于逐行读取文件,并可以处理异常以管理文件不存在或无法访问时的潜在错误。 这些文件 I/O 功能使 C# 成为高效处理文件的绝佳选择。

Tim 通过强调 C# 中文本文件读取和写入的简单性引入主题。 他演示了几行代码如何实现这些任务,使文本文件成为数据存储的可行选择。

创建演示控制台应用程序

Tim 首先使用 Visual Studio 创建了一个名为 "TextFileDataAccessDemo "的新控制台应用程序。

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace TextFileDataAccessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine(); // Keeps the console window open to view the output
        }
    }
}

他解释了使用Console.ReadLine来保持控制台窗口打开,允许用户查看输出。

读取文本文件

Tim演示了如何使用File.ReadAllLines方法从文本文件中读取数据。 他展示了如何处理文件路径和使用字符串字面量来避免转义字符。

string filePath = @"C:\demos\test.txt";
List<string> lines = File.ReadAllLines(filePath).ToList();

File.ReadAllLines方法从指定文件中读取所有行,并将它们作为字符串数组返回。 Tim 将数组转换为列表,以便于操作。

写入文本文件

Tim解释了如何使用File.WriteAllLines方法将数据写入文本文件。 他演示了如何在列表中添加新行,并将更新后的列表写回文件。

lines.Add("Sue,Storm,WWIStorm.com");
File.WriteAllLines(filePath, lines);

这段代码将一个新条目添加到列表中,并将整个列表写回文件。

创建数据模型并从文件中填充数据模型

Tim创建了一个Person类来表示文本文件中每个条目的数据结构。

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string URL { get; set; }
}

然后他读取文件并填充一个Person对象的列表。

List<Person> people = new List<Person>();
List<string> lines = File.ReadAllLines(filePath).ToList();

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    Person newPerson = new Person
    {
        FirstName = entries[0],
        LastName = entries[1],
        URL = entries[2]
    };
    people.Add(newPerson);
}

此代码读取每一行,按逗号分隔,并使用提取的数据创建一个Person对象。

字符串插值

Tim 介绍了字符串插值,这是 C# 6.0 中的一项功能,可以简化变量和字符串的组合过程。 此方法在字符串前使用{}在字符串中直接嵌入变量。

foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}: {person.URL}");
}

这种语法比使用+操作符的传统连接更简洁和高效。

C# Read Write File

数据验证

Tim 强调了从文本文件读取数据时验证数据的重要性。他指出了假设数据结构的风险,并建议检查拆分条目的长度。

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    if (entries.Length == 3)
    {
        Person newPerson = new Person
        {
            FirstName = entries[0],
            LastName = entries[1],
            URL = entries[2]
        };
        people.Add(newPerson);
    }
    else
    {
        // Handle error
        Console.WriteLine("Invalid data format.");
    }
}

这样可以确保只处理条目数量正确的行,避免潜在的运行时错误。

向列表中添加对象

Tim演示了如何向列表中添加新对象。他使用Person类的匿名实例向列表中添加新的人。

people.Add(new Person { FirstName = "Greg", LastName = "Jones", URL = "WOWT.com" });

这在一行中创建并初始化一个新people列表中。

将数据写回文本文件

Tim解释了如何将Person对象列表转换为字符串列表,其中每个字符串代表文件中的一行。

List<string> output = new List<string>();
foreach (var person in people)
{
    output.Add($"{person.FirstName},{person.LastName},{person.URL}");
}
File.WriteAllLines(filePath, output);

此代码遍历Person对象创建一个CSV字符串,并将字符串列表写入文件。

结论

Tim Corey 的 C# 文件 I/O 操作详细指南提供了从文本文件读取和向文本文件写入的实用见解。 按照他的示例,开发人员可以有效地使用文本文件管理数据,并实施强大的数据存储解决方案。 如需深入了解和亲身体验,我强烈建议您观看 Tim Corey 的视频,他在视频中通过实际案例深入探讨了这些概念。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户