var filePath = @"C:/Example/Greeting.txt";
var lines = File.ReadLines(filePath, Encoding.UTF8);
foreach (var line in lines)
Debug.Log("line" + line);
ReadLines를 이용하며니 LINQ를 조합해서 다채로운 처리를 깨끗하게 할 수 있다.
1.첫 n행을 읽는다.
var lines = File.ReadLines(filePath, Encoding.UTF8)
.Take(10)
.ToArray();
첫 10행만 읽어 들입니다.
ReadAllLines 메서드와는 달리 파일의 마지막까지 읽어 들이지는 않습니다(중요).
2. 조건에 일치하는 행의 개수를 센다.
var count = File.ReadLines(filePath, Encoding.UTF8)
.Count(s => s.Contains("Windows"));
Windows라는 문자열이 포함돼 있는 행의 개수를 셉니다.
3.조건에 일치하는 행만 읽어 들인다.
var lines = File.ReadLines(filePath, Encoding.UTF8)
.Where(s => !string.IsNullOrWhiteSpace(s))
.ToArray();
위의 코드는 빈 문자열이나 공백인 행 이외의 행을 읽을 수 있습니다.
IsNullOrWhiteSpace 메서드는 .NET 프레임워크 4 이후에 이용할 수 있는 메서드입니다.
4.조건에 일치하는 행이 존재하는지 여부를 조사한다.
var exists = File.ReadLines(filePath, Encoding.UTF8)
.Where(s => !string.IsNullOrWhiteSpace(s))
.Any(s => s.All(c => char.IsDigit(c)));
숫자로만 구성된 행이 존재하는지 조사합니다. 빈 행이 존재하면 조건에 일치한다고 판단되지 않도록 미리 where 메서드를 기술하지 않으면 빈 행에 대해서도 s.ALL이 호출되어 true를 만환하므로 미리 where로 거름
5.중복된 행을 제외하고 나열한다.
var lines = File.ReadLines(filePath, Encoding.UTF8)
.Distinct()
.OrderBy(s => s.Length)
.ToArray();
중복된 행을 제외하고 행의 길이가 짧은 순서로 정렬한 후에 배열에 저장합니다.
6.행마다 어떤 변환 처리를 실행한다.
읽어 들인 행에 어떤 변환 처리를 수행하는 예제.
택스트 파일에서 읽어 들인 각 행에 행 번호를 붙이는 코드.
var lines = File.ReadLines(filePath)
.Select((s, ix) => string.Format("{0,4}: {1}", ix + 1, s))
.ToArray();
foreach (var line in lines)
Debug.Log(line);
7.기존 텍스트 파일의 첫머리에 행을 삽입하는 기능
var filePath = @"C:/Example/Greeting.txt";
using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream))
{
string texts = reader.ReadToEnd();
stream.Position = 0;
writer.WriteLine("삽입할 새 행1");
writer.WriteLine("삽입할 새 행1");
writer.Write(texts);
}
}
댓글 없음:
댓글 쓰기