336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
C# CSV 파일 읽기(CSV Reader)
원래 XML을 사용하려고 했는데,
읽는 속도가 CSV가 빠를것 같아서 간단히 구현을 하려합니다.
다음과 같은 데이터로 테스트를 하겠습니다.
ID앞에 #을 붙인 이유는 첫 라인이 키라는것을 명시하기 위함입니다.
* 파싱할 때 첫 라인을 키로 잡아도 됩니다.
만든 테이블을 CSV로 저장을 하였다면,
인코딩을 UTF8로 바꿔주셔야 합니다.
그래야 모든 언어에서 오류없이 작동합니다.
자동 저장은 http://slway000.tistory.com/17 를 참고하세요.
우선 수작업으로 하기 위해, 메모장으로 열어서 다음처럼
인코딩을 UTF-8로 바꿔줍니다.
다음은 C#으로 작성한 코드 입니다.
(테스트 코드를 만들고 나중에 유니티에 적용할 예정입니다.)
파일을 읽어들여 한라인씩 읽어서
키와 값들을 구분시켜 처리하도록 합니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace CSVParse { class Program { static void Main(string[] args) { string strFile= "testcsv.csv"; using (FileStream fs = new FileStream(strFile, FileMode.Open)) { using (StreamReader sr = new StreamReader(fs, Encoding.UTF8, false)) { string strLineValue = null; string[] keys = null; string[] values = null; while ((strLineValue = sr.ReadLine()) != null) { // Must not be empty. if (string.IsNullOrEmpty(strLineValue)) return; if (strLineValue.Substring(0, 1).Equals("#")) { keys = strLineValue.Split(','); keys[0] = keys[0].Replace("#", ""); Console.Write("Key : "); // Output for (int nIndex = 0; nIndex < keys.Length; nIndex++) { Console.Write(keys[nIndex]); if (nIndex != keys.Length - 1) Console.Write(", "); } Console.WriteLine(); continue; } values = strLineValue.Split(','); Console.Write("Value : "); // Output for (int nIndex = 0; nIndex < values.Length; nIndex++) { Console.Write(values[nIndex]); if (nIndex != values.Length - 1) Console.Write(", "); } Console.WriteLine(); } } } } } }
결과화면입니다.
아주 간단한 예제이기 떄문에 실제 데이터 파싱할 경우
예외처리가 필요할 수 있습니다.