C# txt文本读取最后X行
来源:互联网 发布:ubuntu文件夹进入终端 编辑:程序博客网 时间:2024/05/17 20:26
using System.IO;/// <summary>/// 读取文本文件最后的内容/// </summary>/// <param name="AFileName">文件名</param>/// <param name="ALineCount">行数</param>/// <param name="AEncoding">字符编码</param>/// <returns>返回读取的内容</returns>public string ReadLastLine(string AFileName, int ALineCount, Encoding AEncoding){ if (ALineCount <= 0) return string.Empty; if (!File.Exists(AFileName)) return string.Empty; // 文件不存在 if (AEncoding == null) AEncoding = Encoding.Default; using (FileStream vFileStream = new FileStream(AFileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { if (vFileStream.Length <= 0) return string.Empty; // 空文件 byte[] vBuffer = new byte[0x1000]; // 缓冲区 int vReadLength; // 读取到的大小 int vLineCount = 0; // 读取的行数 int vReadCount = 0; // 读取的次数 int vScanCount = 0; // 扫描过的字符数 long vOffset = 0; // 向后读取的位置 do { vOffset = vBuffer.Length * ++vReadCount; int vSpace = 0; // 偏移超出的空间 if (vOffset >= vFileStream.Length) // 超出范围 { vSpace = (int)(vOffset - vFileStream.Length); vOffset = vFileStream.Length; } vFileStream.Seek(-vOffset, SeekOrigin.End); //“SeekOrigin.End”反方向偏移读取位置 vReadLength = vFileStream.Read(vBuffer, 0, vBuffer.Length - vSpace); #region 所读的缓冲里有多少行 for (int i = vReadLength - 1; i >= 0; i--) { if (vBuffer[i] == 10) { if (vScanCount > 0) vLineCount++; // #13#10为回车换行 if (vLineCount >= ALineCount) break; } vScanCount++; } #endregion 所读的缓冲里有多少行 } while (vReadLength >= vBuffer.Length && vOffset < vFileStream.Length && vLineCount < ALineCount); if (vReadCount > 1) // 读的次数超过一次,则需重分配缓冲区 { vBuffer = new byte[vScanCount]; vFileStream.Seek(-vScanCount, SeekOrigin.End); vReadLength = vFileStream.Read(vBuffer, 0, vBuffer.Length); } return AEncoding.GetString(vBuffer, vReadLength - vScanCount, vScanCount); }}private void button1_Click(object sender, EventArgs e){ textBox1.Text = ReadLastLine(@"c:\temp\WindowsUpdate.log", 7, Encoding.Default);}以上代码转载于http://bbs.csdn.net/topics/230002962,31楼
0 0
- C# txt文本读取最后X行
- C#读取txt文本内容行数
- 按行读取TXT文本
- c++ 按行读取txt文本
- java以行读取txt文本内容
- android 按行读取txt文本内容
- java读取txt文本
- 读取txt文本
- txt文本读取删除
- C++ 读取txt文本
- C#读取文本(txt/csv)到数据库方法
- 分别使用java和C#从读取txt文本
- ajax读取txt文本内容
- ajax读取txt文本内容
- 1.读取TXT文本内容
- 读取txt文件中的文本
- python 读取txt中文文本
- python读取中文txt文本
- C/C++基本知识(二)
- 项目不能够加入tomact
- python的xlrd模块(读取excel表格)
- Ubuntu Mate:扩展存储到整张SD卡
- GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名
- C# txt文本读取最后X行
- leetcode之路026 Remove Duplicates from Sorted Arrayy
- Android--Support V4, V7, V13的作用与用法
- 南阳oj Registration system 题目991
- zoj 3228 Searching the String(trie)
- POJ 1308 Is It A Tree?
- Struts2 - 常用的constant总结
- Tomcat安装(MAC)
- 术语