iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#读取文件的方法
  • 362
分享到

C#读取文件的方法

2023-06-18 00:06:12 362人浏览 独家记忆
摘要

本篇内容介绍了“C#读取文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#读取文件高效方法问题的提出:你平时是怎么读取文件的?使用

本篇内容介绍了“C#读取文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

C#读取文件高效方法问题的提出:你平时是怎么读取文件的?使用流读取。是的没错,C#给我们提供了非常强大的类库(又一次吹捧了.net一番),里面封装了几乎所有我们可以想到的和我们没有想到的类,流是读取文件的一般手段,那么你真的会用它读取文件中的数据了么?真的能读完全么?

通常我们使用C#读取文件使用如下的步骤:

声明并使用File的OpenRead实例化一个文件流对象,就像下面这样

FileStream fs = File.OpenRead(filename);

或者

FileStream fs = FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);

准备一个存放文件内容的字节数组,fs.Length将得到文件的实际大小,就像下面这样

byte[] data = new byte[fs.Length];

哇!开始读了,调用一个文件流的一个方法读取数据到data数组中

fs.Read (data, 0, data.Length);

C#读取文件的惊奇发现:呵呵!我们只写了3句就可以把文件里面的内容原封不动的读出来,真是太简洁了!可以这段代码真的能像你预期的那样工作么?答案是:几乎可以!在大部分情况下上面的代码工作的很好,但是我们应该注意Read方法是有返回值的,既然有返回值那么一定有其道理,如果按照上面的写法完全可以是一个没有返回值的函数。我想返回值的目的是,为了给我们一个机会判断实际读取文件的大小,从而来判断文件是否已经完全读完。所以上面的代码不能保证我们一定读完了文件里面的所有字节(虽然在很多情况下是读完了)。下面的方法提供了一个比上面方法更安全的方法,来保证文件被完全读出

public static void SafeRead (Stream stream, byte[] data){   int offset=0;   int remaining = data.Length;   // C#读取文件之只要有剩余的字节就不停的读   while (remaining > 0){    int read = stream.Read(data, offset, remaining);   if (read <= 0)   throw new EndOfStreamException("文件读取到"+read.ToString()+"失败!");   // C#读取文件之减少剩余的字节数    remaining -= read;   // C#读取文件之增加偏移量    offset += read;   }   }

C#读取文件会遇见的问题:有些情况下你不知道流实际的长度比如:网络流。此时可以使用类似的方法读取流直到流里面的数据完全读取出来为止。我们可以先初始化一段缓存,再将流读出来的流信息写到内存流里面,就像下面这样:

public static byte[] ReadFully (Stream stream){   // 初始化一个32k的缓存   byte[] buffer = new byte[32768];   using (MemoryStream ms = new MemoryStream()){ //返回结果后会自动回收调用该对象的Dispose方法释放内存   // 不停的读取    while (true){    int read = stream.Read (buffer, 0, buffer.Length);   // 直到读取完***的3M数据就可以返回结果了    if (read <= 0)     return ms.ToArray();    ms.Write (buffer, 0, read);    }   }   }

虽然上面的例子都比较简单,效果也不是很明显(大部分都是对的),也许你早就会了,没关系这篇文章本来就是写给初学者的。

下面的方法提供了一种使用指定缓存长度的方式读取流,虽然在很多情况下你可以直接使用Stream.Length得到流的长度,但是不是所有的流都可以得到。

public static byte[] Read2Buffer (Stream stream, int BufferLen){   // 如果指定的无效长度的缓冲区,则指定一个默认的长度作为缓存大小   if (BufferLen < 1){   BufferLen = 0x8000;   }   // 初始化一个缓存区   byte[] buffer = new byte[BufferLen];   int read=0;      int block;   // 每次从流中读取缓存大小的数据,知道读取完所有的流为止   while ( (block = stream.Read(buffer, read, buffer.Length-read)) > 0){   // C#读取文件之重新设定读取位置   read += block;        // C#读取文件之检查是否到达了缓存的边界,检查是否还有可以读取的信息   if (read == buffer.Length){   // 尝试读取一个字节   int nextByte = stream.ReadByte();         // C#读取文件之读取失败则说明读取完成可以返回结果   if (nextByte==-1){   return buffer;   }         // 调整数组大小准备继续读取   byte[] newBuf = new byte[buffer.Length*2];   Array.Copy(buffer, newBuf, buffer.Length);   newBuf[read]=(byte)nextByte;   buffer = newBuf;  // buffer是一个引用(指针),  //这里意在重新设定buffer指针指向一个更大的内存   read++;   }   }   // 如果缓存太大则使用ret来收缩前面while读取的buffer,然后直接返回   byte[] ret = new byte[read];   Array.Copy(buffer, ret, read);   return ret;   }

“C#读取文件的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: C#读取文件的方法

本文链接: https://www.lsjlt.com/news/294801.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#读取文件的方法
    本篇内容介绍了“C#读取文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#读取文件高效方法问题的提出:你平时是怎么读取文件的?使用...
    99+
    2023-06-18
  • C#读取txt文件数据的方法实例
    第一步新建txt文件,写入内容 我是放在D盘下的,数据以逗号隔开的,是英文逗号 第二步读取数据 在需要读取数据的页面,添加代码,就可以了 private void Phone...
    99+
    2024-04-02
  • python读取文件方法
    f = open("foo.txt")             # 返回一个文件对象 line = f.readline()             # 调用文件的 readline()方法 while line:     print li...
    99+
    2023-01-31
    文件 方法 python
  • python读取.mtx文件的方法
    小编给大家分享一下python读取.mtx文件的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游...
    99+
    2023-06-14
  • C++读取文件的方式有哪些
    这篇文章主要讲解了“C++读取文件的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++读取文件的方式有哪些”吧!C++可以根据不同的目的来选取文件的读取方式,目前为止学习了C++...
    99+
    2023-07-05
  • c语言读取文件和写入文件的方法是什么
    在C语言中,读取文件的方法是使用`fopen`函数打开文件,然后使用`fread`或`fgetc`函数来读取文件的内容,最后使用`f...
    99+
    2023-08-09
    c语言
  • java 读取文件方法的总结
    java 读取文件方法的总结按字节读取 文件 内容2、按字符读取 文件 内容3、按行读取 文件 内容4、随机读取 文件 内容public class ReadFromFile { public static void readFi...
    99+
    2023-05-31
    java 文件读取 ava
  • C语言实现读取CSV文件的方法详解
    1、每一次只能读取同一种数据类型,不能读取字符串。 2、第次读取会返回一个 CSV数据结构,有源数据和二维数组,行列数信息 3、可以转换二维数组,但总大小不能变 123.csv M...
    99+
    2022-12-21
    C语言读取CSV文件 C语言读取CSV C语言 CSV
  • C++读取文件的四种方式总结
    C++可以根据不同的目的来选取文件的读取方式,目前为止学习了C++中的四种文件读取方式。 C++文件读取的一般步骤: 1、包含头文件 #include<fstream> ...
    99+
    2023-05-15
    C++实现文件读取方式 C++文件读取 C++文件
  • Java读取文本文件的各种方法
    目录1、方法方法一、 使用BufferedReader类方法二、使用 FileReader 类方法三、使用 Scanner 类方法四、读取列表中的整个文件2、语法方法五、将文本文件读...
    99+
    2024-04-02
  • c#读取文件详谈
    c#里面封装了几乎所有我们可以想到的和我们没有想到的类,流是读取文件的一般手段,那么你真的会用它读取文件中的数据了么?真的能读完全么? 通常我们读取一个文件使用如下的步骤: 1、声明...
    99+
    2022-11-15
    c# 读取文件
  • Unity 读取文件 TextAsset读取配置文件方式
    1 支持文件类型 .txt .html .htm .xml .bytes .json .csv .yaml .fnt 2 寻找文件 1 //Load texture from d...
    99+
    2024-04-02
  • phpmyadmin无法读取文件的解决方法
    这篇文章主要介绍phpmyadmin无法读取文件的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在phpmyadmin导入数据库文件时出现文件无法读取可以通过命令直接导入。示...
    99+
    2024-04-02
  • C++文件的数据写入和文件的数据读取的方法实现
    目录一:没有数据,准备数据,写入文件二:读文件操作一:没有数据,准备数据,写入文件 1.main.cpp #include<iostream> using namespa...
    99+
    2024-04-02
  • perl读取文件的方法有哪些
    Perl读取文件的方法有以下几种:1. 使用open函数打开文件,并使用...
    99+
    2023-10-18
    perl
  • Java文件读取的方法有哪些
    今天小编给大家分享一下Java文件读取的方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。BufferedReader...
    99+
    2023-07-06
  • springboot读取application.yaml文件数据的方法
    本文实例为大家分享了springboot读取application.yaml文件数据的具体代码,供大家参考,具体内容如下 提示:以下是本篇文章正文内容,下面案例可供参考 一、创建并编...
    99+
    2024-04-02
  • Python读取CSV文件的几种方法
    话不多说,开干!!! 目录 1. 使用 csv 模块 2.使用 numpy 库 3.使用pandas库 4.使用标准库中的 csv 模块 5.注意事项 1. 使用 csv 模块 (1)项目目录如下图所示: (2)代码如下: impor...
    99+
    2023-08-31
    python 开发语言 pandas numpy
  • C#文件操作、读取文件、Debug/Trace类用法
    1、文件操作 这段代码在 System.Private.CoreLib 下,对 System.IO.File 中的代码进行精简,供 CLR 使用。 当使用文件时,...
    99+
    2024-04-02
  • GoLang读取文件的方法有哪些
    这篇文章主要介绍“GoLang读取文件的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“GoLang读取文件的方法有哪些”文章能帮助大家解决问题。一. 整个文件读入内存直接将数据直接读取入内...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作