C#读取txt文件数据详解

一、文件路径及打开方式

在C#中读取txt文件,首先需要确定文件路径并确定文件的打开方式,这可以通过File类和StreamReader类实现。其中,File类支持对文件的读写操作,StreamReader类则提供了一些简便的方法,使读取文本文件变得简单。

代码示例:

string filePath = "C:\\data.txt";
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.UTF8);

二、按行读取文件内容

读取文本文件通常是按行读取的,C#提供了多种方法可以轻松实现这一操作。在StreamReader类中,ReadLine()方法可读取一行数据,如果读到结尾则返回null。而File.ReadAllLines()方法则将整个文件读取为一个字符串数组,每个数组元素为文件中的一行数据。

代码示例:

string filePath = "C:\\data.txt";
string[] lines = File.ReadAllLines(filePath);
foreach (string line in lines)
{
    Console.WriteLine(line);
}

三、按字符读取文件内容

除了按行读取文件外,有时候还需要按字符读取文件。StreamReader类的Read()方法可读取一个字符,ReadToEnd()方法则可一次性读取整个文件。

代码示例:

string filePath = "C:\\data.txt";
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.UTF8);
while (!sr.EndOfStream)
{
    char c = (char)sr.Read();
    Console.Write(c);
}

四、读取csv文件

读取csv文件是数据处理中常见的操作。csv文件是用逗号分隔的文本文件,每行表示一个记录项,每个记录项又由多个字段组成。C#中可通过Split()方法将一行数据按逗号分隔并提取其中的字段。

代码示例:

string filePath = "C:\\data.csv";
string[] lines = File.ReadAllLines(filePath);
foreach (string line in lines)
{
    string[] fields = line.Split(',');
    foreach (string field in fields)
    {
        Console.Write(field + " ");
    }
    Console.Write("\n");
}

五、读取大文件

对于大文件,C#中的传统读取方式会导致内存消耗过大,甚至超出操作系统对进程内存的限制。为了避免这种情况,可以使用MemoryMappedFile类来读取大文件。该类会将文件的一部分映射到内存中,一旦读取完成就自动释放内存,从而避免内存消耗过大。

代码示例:

string filePath = "C:\\bigData.txt";
using (var mmf = MemoryMappedFile.CreateFromFile(filePath))
{
    using (var stream = mmf.CreateViewStream())
    {
        using (var reader = new StreamReader(stream))
        {
            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();
                Console.WriteLine(line);
            }
        }
    }
}

六、读取加密文件

在实际操作中,有时需要读取加密文件并对其进行解密。可以使用C#中的加密类库和文件流实现对加密文件的读取。

代码示例:

string filePath = "C:\\encryptedData.txt";
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Key = Encoding.UTF8.GetBytes("testkey123456789");
aes.IV = Encoding.UTF8.GetBytes("testiv123456789");
using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
    using (CryptoStream cs = new CryptoStream(fs, aes.CreateDecryptor(), CryptoStreamMode.Read))
    {
        using (StreamReader reader = new StreamReader(cs))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

原创文章,作者:IAUIC,如若转载,请注明出处:https://www.506064.com/n/332600.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
IAUICIAUIC
上一篇 2025-01-24 18:46
下一篇 2025-01-24 18:47

相关推荐

  • Python读取CSV数据画散点图

    本文将从以下方面详细阐述Python读取CSV文件并画出散点图的方法: 一、CSV文件介绍 CSV(Comma-Separated Values)即逗号分隔值,是一种存储表格数据的…

    编程 2025-04-29
  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • 为什么用cmd运行Java时需要在文件内打开cmd为中心

    在Java开发中,我们经常会使用cmd在命令行窗口运行程序。然而,有时候我们会发现,在运行Java程序时,需要在文件内打开cmd为中心,这让很多开发者感到疑惑,那么,为什么会出现这…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • Python zipfile解压文件乱码处理

    本文主要介绍如何在Python中使用zipfile进行文件解压的处理,同时详细讨论在解压文件时可能出现的乱码问题的各种解决办法。 一、zipfile解压文件乱码问题的根本原因 在P…

    编程 2025-04-29
  • Python将矩阵存为CSV文件

    CSV文件是一种通用的文件格式,在统计学和计算机科学中非常常见,一些数据分析工具如Microsoft Excel,Google Sheets等都支持读取CSV文件。Python内置…

    编程 2025-04-29
  • 如何用Python统计列表中各数据的方差和标准差

    本文将从多个方面阐述如何使用Python统计列表中各数据的方差和标准差, 并给出详细的代码示例。 一、什么是方差和标准差 方差是衡量数据变异程度的统计指标,它是每个数据值和该数据值…

    编程 2025-04-29
  • Python如何导入py文件

    Python是一种开源的高级编程语言,因其易学易用和强大的生态系统而备受青睐。Python的import语句可以帮助用户将一个模块中的代码导入到另一个模块中,从而实现代码的重用。本…

    编程 2025-04-29

发表回复

登录后才能评论