[ 대용량 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();
}
}
}
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 |