[ 대용량 txt 파일 편집 에디터를 못찾으셨거나 대용량 txt 파일을 짜르거나 추출해 할 경우 ]
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace ConsoleApplication3{ class Program { static void Main(string[] args) { int counter = 0; int fileCounter = 0; string readLine, writeLine; // 파라메터가 있는 지 확인 : 파라메터는 읽어들일 '파일경로\파일명.확장자' 임. if (args.Length < 1) { System.Console.WriteLine("needs file name for reading."); return; } string readFileName = @args[0]; System.Console.WriteLine("read file : " + readFileName); string[] temp; System.IO.StreamReader readFile = new System.IO.StreamReader(readFileName); // 편집 후 저장될 파일명 초기화 string writeFileName = readFileName + fileCounter; // 수신 이메일을 읽을 경우 리스트에 저장 // 중복처리를 위함. List<string> writedEmailList = new List<string>(); int index = -1; string saveEmail = ""; string[] temp2; // 파일 끝까지 라인단위로 Read. while ((readLine = readFile.ReadLine()) != null) { // 읽어들인 라인을 구분자(',') 로 쪼갬 temp = readLine.Split(','); // 쪼갠 각 항목이 따옴표("")로 싸여있음. 따옴표를 삭제 saveEmail = temp[2].Replace('"',' ').Trim(); // 수신된 이메일이 이전에 수신한 적이 있는지 search index = writedEmailList.BinarySearch(saveEmail); if (index < 0) { // write 할 라인을 저장 writeLine = saveEmail + "\r\n"; // 50000줄을 write 하면 새롭게 파일을 만듦. if (counter % 50000 == 0) { counter = 0; writeFileName = readFileName + fileCounter; System.IO.File.WriteAllText(writeFileName, writeLine); writedEmailList.Insert(~index, saveEmail); System.Console.WriteLine("Create file : " + writeFileName); System.Console.WriteLine("======================================================="); counter++; fileCounter++; } else { System.IO.File.AppendAllText(writeFileName, writeLine); writedEmailList.Insert(~index, saveEmail); counter++; } System.Console.Write(writeLine); } } readFile.Close(); System.Console.WriteLine("End read file!!! press enter key!!"); System.Console.ReadLine(); } }}728x90
반응형
'C#' 카테고리의 다른 글
| yield (0) | 2018.06.29 |
|---|---|
| FileStream 비동기 입출력 (0) | 2018.06.29 |
| ENCODING / BITCONVERTER (0) | 2018.06.29 |
| BinaryFormatter / XmlSerializer / DataContractJsonSerializer (0) | 2018.06.29 |
| EVENTWAITHANDLE (0) | 2018.06.29 |