c#读取大Txt文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace ReadBigTxtDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnRead_Click(object sender, EventArgs e) { if (ReadBigFile()) { lblResult.Text = "Completed!"; } } private bool ReadBigFile() { string sTmpFile=@"c:\tmpTest.txt"; if (File.Exists(sTmpFile)) { File.Delete(sTmpFile); } if (!System.IO.File.Exists(sTmpFile)) { FileStream fs; fs = File.Create(sTmpFile); fs.Close(); } if (!File.Exists(txtFileName.Text.Trim())) { lblResult.Text = "File not exist!"; txtFileName.Focus(); return false; } FileStream streamInput = System.IO.File.OpenRead(@txtFileName.Text.Trim()); FileStream streamOutput = System.IO.File.OpenWrite(sTmpFile); int iRowCount = 10; int.TryParse(txtRowCount.Text.Trim(), out iRowCount); try { for (int i = 1; i <= iRowCount; ) { int result = streamInput.ReadByte(); if (result == 13) { i++; } if (result == -1) { break; } streamOutput.WriteByte((byte)result); } } finally { streamInput.Dispose(); streamOutput.Dispose(); } string sContent = ReaderFile(sTmpFile); CopyToClipboard(sContent); return true; } public static string ReaderFile(string path) { string fileData = string.Empty; try { ///读取文件的内容 StreamReader reader = new StreamReader(path, Encoding.Default); fileData = reader.ReadToEnd(); reader.Close(); } catch (Exception ex) { // throw new Exception(ex.Message,ex); } ///抛出异常 return fileData; } private void CopyToClipboard(string sSource) { Clipboard.Clear(); if (!string.IsNullOrEmpty(sSource)) { Clipboard.SetText(sSource); } } } }
窗体