zoukankan      html  css  js  c++  java
  • C#分块读取文本数据(FileStream)

    C#分块读取文本数据(FileStream)

    2013年01月05日 15:16:21 xs_zgsc 阅读数 4118

    针对文本内容很大的时候,分块来处理数据。

    直接上代码:

    
     
    1. using System.IO;

    2. using System.Text;

    3.  
    4. static void ReadStreamFromFile()

    5. {

    6. string filePath = @"D:\test.txt";

    7. int bufferSize = 1024; //每次读取的字节数

    8. byte[] buffer = new byte[bufferSize];

    9. FileStream stream = null;

    10. try

    11. {

    12. stream = new FileStream(filePath, FileMode.Open);

    13. long fileLength = stream.Length;//文件流的长度

    14. int readCount = (int)Math.Ceiling((double)(fileLength / bufferSize)); //需要对文件读取的次数

    15. int tempCount = 0;//当前已经读取的次数

    16. do

    17. {

    18. stream.Read(buffer, tempCount * bufferSize, bufferSize); //分readCount次读取这个文件流,每次从上次读取的结束位置开始读取bufferSize个字节

    19. //这里加入接收和处理数据的逻辑-

    20. string str = Encoding.Default.GetString(buffer);

    21. Console.WriteLine(str);

    22. tempCount++;

    23. }

    24. while (tempCount < readCount);

    25. }

    26. catch

    27. {

    28. }

    29. finally

    30. {

    31. if (stream != null)

    32. stream.Dispose();

    33. }

    34. }

    其中:

    stream.Read(buffer, tempCount * bufferSize, bufferSize)

    其实就是使用Read来读取分块段,使用一个计数器tempCount来标识下读取到哪段了,再从这个位置继续往下读取自定义长度bufferSize的数据

     如果文本数据不是很大,还可以使用StreamReader方法来直接从头读到尾。

    代码如下:

    
     
    1. string FileName = Server.MapPath("Test.txt");

    2. string TxtContent = "";

    3. if (File.Exists(FileName))

    4. {

    5. StreamReader objReader = new StreamReader(FileName, System.Text.Encoding.GetEncoding("gb2312"));

    6. while (!objReader.EndOfStream)

    7. {

    8. TxtContent += objReader.ReadLine() + ",";

    9. }

    10. objReader.Close();

    11. }

    12.  
    13. string[] strArr = TxtContent.Split(',');

    14.  
    15. for (int i = 0; i < strArr.Length; i++)

    16. {

    17. Response.Write(strArr[i] + " ");

    18. if ((i + 1) % 6 == 0)

    19. {

    20. Response.Write("<br>");

    21. }

    22. }

  • 相关阅读:
    Android--Activity中使用Intent传值
    Android--使用剪切板在Activity中传值
    Android--通过Application传递数据
    HTTP 头缓存Last-Modified,ETag,Expires
    HTTP请求头 If-Modified-Since
    HTML5 本地存储形式
    spring作用域(Spring Bean Scopes Example)
    java.sql.SQLException: Data truncation: Truncated incorrect DOUBLE value
    对hadoop 执行mapreduce时发生异常Illegal partition for的解决过程
    InnerHTML属性的XSS利用
  • 原文地址:https://www.cnblogs.com/grj001/p/12225082.html
Copyright © 2011-2022 走看看