아!!!!!!
첫 포스팅은 c# 관련 글로 하는구나 ㅋㅋㅋㅋ
즐겁게 초대장을 박고 이제 시작함 해보자 ㅋㅋㅋ
첫 주제로 파일 찾기를 선택한 이유는 단 한가지도
파일 입력, 출력은 가장 많이 사용하기 때문이다. (그래서 보통은 기본이라고들 하지)
그런데 똑똑한 MS형들은 대박인 함수를 만들어 두셨다.
함수명 : Directory.GetFiles(String Path)
매개변수 : Path 찾고자하는 파일 위치
MSDN에서 제공하는 예제 코드 이다.
123456789101112131415161718192021222324252627282930313233343536373839 using System;using System.IO;using System.Collections;public class RecursiveFileProcessor{public static void Main(string[] args){foreach(string path in args){if(File.Exists(path)){ProcessFile(path);}else if(Directory.Exists(path)){ProcessDirectory(path);}else{Console.WriteLine("{0} is not a valid file or directory.", path);}}}public static void ProcessDirectory(string targetDirectory){string [] fileEntries = Directory.GetFiles(targetDirectory); // Aforeach(string fileName in fileEntries)ProcessFile(fileName);string [] subdirectoryEntries= Directory.GetDirectories(targetDirectory);foreach(string subdirectory in subdirectoryEntries)ProcessDirectory(subdirectory);}public static void ProcessFile(string path){Console.WriteLine("Processed file '{0}'.", path);}}
소스를 간단히 설명하면
// A와 같이 파일 목록을 받아서 적절한 프로세스를 진행하면 된다
이건 간단하게 예제를 살펴본 것이고
이제 실전에서는 어떻게 사용하는 지 알아보도록 하겠다.
실전에서 파일의 내용을 읽어들여야 할 경우는
Log를 분석하거나, 타회사와 Interface를 하는 경우 txt파일로 하는 경우 일 것이다.
그렇다면 이렇게 하는 것이 과연 프로그래밍적으로 좋은 코딩일까?
그래서 MS 형님들은 더 멋있는 함수를 만들었다.
함수명 : File.ReadAllLines(String Path)
, File.ReadAllLines(String Path, Encoding encoding)
매개변수 : Path 말그대로 파일 경로
, Encoding 말그대로 파일 인코딩형식이다.
예제 소스 이다.
12345678910111213141516171819202122232425 using System;using System.IO;class Test{public static void Main(){string path = @"c:\temp\MyTest.txt";if (!File.Exists(path)){string[] createText = { "Hello", "And", "Welcome" };File.WriteAllLines(path, createText);}string appendText = "This is extra text" + Environment.NewLine;File.AppendAllText(path, appendText);string[] readText = File.ReadAllLines(path); // Aforeach (string s in readText){Console.WriteLine(s);}}}// A 부분에서 파일의 내용을 라인별로 읽어 들인다.
이야~~~~~~~~~~~~~!!!!!
보기만해도 대박이다.
그냥 읽어 들여서 그냥 쓰기만 하면된다.
파일 Open, Close이런거 필요 없다. 걍 저거 쓰면 된다. ㅋㅋㅋ
C#을 하면서 느끼는 거지만 아주 잘 만들었다. 사용자의 편의를 잘 사용해서
디자인패턴 이야기도 가끔 하겠지만 이런 형태의 패턴을 아마도 Facade라고
하지 않을까 생각이 된다. 뭐 아니면 말고 ㅋㅋㅋ
'C#' 카테고리의 다른 글
[C#] 내부 클래스 (1) | 2014.06.16 |
---|---|
[C#] 소멸자 Finalize (0) | 2014.06.13 |
[C#] Delegate 사용법 (0) | 2014.06.12 |
[C#]명령 프롬프트에서 컴파일 하기 CSC.exe (0) | 2014.06.11 |
[C#] Boxing과 Unboxing의 고찰 (0) | 2014.06.11 |