几分钟搞懂c#之FileStream对象读写大文件(推荐)

 更新时间:2019年04月30日 13:58:15   作者:牛掰是怎么形成的  
这篇文章主要介绍了c#之FileStream对象读写大文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

还是一样,我先上代码,但是为了你们测试结果和我一样,必须先有准备工作,否则会找不到目录或者文件就没有效果;

既然是读取大文件,那么这个文本必须存在

现在来看目标目录

其实这里的文本文件可以删除,因为我们写入文本数据的时候的模式是当没有找到文件就创建新的。

下面上的上代码

“` 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Reflection; 
using System.Text;

namespace IO目录管理 
{ 
class Program 
{ 
private string _StrSourcePath = @”E:\TestDir\Test\1.txt”; //源文件目录 
private string _StrTagrgetPath = @”F:\TestDir\Test\1.txt”; //目标文件目录
 public void Test()
  {
    //路径合法性判断
    if(File.Exists(_StrSourcePath))
    {
      //构造读取文件流对象
      using (FileStream fsRead = new FileStream(_StrSourcePath, FileMode.Open)) //打开文件,不能创建新的
      {
        //构建写文件流对象
        using (FileStream fsWrite = new FileStream(_StrTagrgetPath,FileMode.Create)) //没有找到就创建
        {
          //开辟临时缓存内存
          byte[] byteArrayRead = new byte[1024 * 1024]; // 1字节*1024 = 1k 1k*1024 = 1M内存

          //通过死缓存去读文本中的内容
          while(true)
          {
            //readCount 这个是保存真正读取到的字节数
            int readCount = fsRead.Read(byteArrayRead, 0, byteArrayRead.Length);

            //开始写入读取到缓存内存中的数据到目标文本文件中
            fsWrite.Write(byteArrayRead, 0, readCount);


            //既然是死循环 那么什么时候我们停止读取文本内容 我们知道文本最后一行的大小肯定是小于缓存内存大小的
            if(readCount < byteArrayRead.Length)
            {
              break; //结束循环
            }
          }
        }
      }
    }
    else
    {
      Console.WriteLine("源路径或者目标路径不存在。");
    }
  }


  static void Main(string[] args)
  {
    Program p = new Program();
    p.Test();

  }
}

一定要上机测试,具体每行代码解释的很清楚,就不多解释了。

以上所述是小编给大家介绍的c#之FileStream对象读写大文件详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Silverlight文件上传下载实现方法(下载保存)

    Silverlight文件上传下载实现方法(下载保存)

    这篇文章主要介绍了Silverlight文件上传下载实现方法(下载保存) ,需要的朋友可以参考下
    2015-11-11
  • c#中directory 和directoryinfo的使用小结

    c#中directory 和directoryinfo的使用小结

    当使用C#处理目录时,可以使用 System.IO 命名空间中的 Directory 和 DirectoryInfo 类来执行各种目录操作,本文主要介绍了c#中directory 和directoryinfo的使用小结,感兴趣的可以了解一下
    2024-02-02
  • C#使用晚绑定来实现压缩Access数据库的方法

    C#使用晚绑定来实现压缩Access数据库的方法

    这篇文章主要介绍了C#使用晚绑定来实现压缩Access数据库的方法,项目开发中有一定的实用价值,需要的朋友可以参考下
    2014-08-08
  • C# 向二进制文件进行读写的操作方法

    C# 向二进制文件进行读写的操作方法

    该例子使用 BinaryStream 和 BinaryWriter 对二进制文件进行读写操作先上代码再根据我理解的所分享给各位朋友
    2013-04-04
  • C# 如何调用C++ dll string类型返回

    C# 如何调用C++ dll string类型返回

    这篇文章主要介绍了C# 如何调用C++ dll string类型返回问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C#读取或设置ScrollLock状态的方法

    C#读取或设置ScrollLock状态的方法

    这篇文章主要介绍了C#读取或设置ScrollLock状态的方法,涉及C#操作ScrollLock滚动状态的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • c#linq里的Skip和Take实现分页或遍历

    c#linq里的Skip和Take实现分页或遍历

    LINQ的优势在于它提供了一种直观、类型安全的方式来操作各种类型的数据,查询常需要获取一部分数据,为了实现这一功能,LINQ提供了Take 和Skip运算符,Take运算符用于从一个序列中返回指定个数的元素,Skip运算符用于从一个序列中跳过指定个数的元素
    2024-01-01
  • C#中的虚函数virtual

    C#中的虚函数virtual

    这篇文章介绍了C#中的虚函数virtual,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#实现封装常用Redis工具类的示例代码

    C#实现封装常用Redis工具类的示例代码

    这篇文章主要为大家详细介绍了C#实现封装常用Redis工具类的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • 解析使用enumerator模式简化异步操作的详解

    解析使用enumerator模式简化异步操作的详解

    本篇文章是对使用enumerator模式简化异步操作进行了详细的分析介绍,需要的朋友参考下
    2013-05-05

最新评论