닷넷 강의를 듣다가 한번 쯤 정리하고 싶어서 정리 했다. ^^ 필요한 내용임~
 
C#.NET 입출력
 
스트림
입, 출력 작업을 대행해 주는 중간 매개체
-       입, 출력의 대상이 되는 장치에 상관없이 동일한 방법으로 자료 조정
 
스트림의 종류
-       입력 스트림 : TextReader, BinaryReader
-       출력 스트림 : TextWriter, BanaryWrtier
-       스트림 클래스는 입출력이 동시에 사용 가능함
 
.NET 에서 파일과 디렉토리 클래스
 
| FileSystemInfo | 파일 시스템 객체를 나타내는 클래스 | 
| Directory, DirectoryInfo | 디렉토리를 나타내는 기본 클래스 | 
| File, FileInfo | 파일을 나타내는 기본 클래스 | 
| Path | 경로를 조정하기 위한 클래스 | 
 
 
File 클래스
-       입출력에 관련된 클래스들 중 기본이 되는 클래스
-       파일에 관련된 정보를 제고
-       FileStream 의 객체를 생성하여 파일의 입출력 작업을 수행
-       클래스 내의 맴버 메서드들은 public static 으로 되어있음
-       파일 관련 정보 (파일 존재 여부, 파일 생성 시간, 엑세스 시간, 최종 수정시간 등…)
-       파일 삭제, 복사, 이동 가능
 
File 클래스 주요 메서드
| File.Copy | 파일을 복사 한다. | File.Copy (“File.Test.cs”, “Output.txt”, true); | 
| File.Exists | 파일이 존재 하는지 체크한다. | File.Exists (“Output.txt”); | 
| File.GetCreationTime | 파일 생성 시간을 리턴한다. |   | 
| File.OpenRead | FileStream 을 리턴한다. |   | 
 
문자 스트림 생성 예제
| FileStream fs = File.OpenRead (”poet.txt”); StreamReader r = new StreamReader (fs, System.Text.Encoding.Default);   // 문자 스트림 변환 r.BaseStream.Seek (0, SeekOrigin.Begin); while (r.Peek () > -1) Console.WriteLine (r.ReadLine ()); r.Close (); | 
Directory 클래스
| Directory.CreateDirectory | 디렉터리 생성 | 
| Directory.Exists | 디렉토리 존재 확인 | 
| Directory.GetFiles | 파일 리스트를 리턴한다. | 
| Directory.GetDirectories | 디렉토리 리스트를 리턴한다. | 
|   |   | 
|   |   | 
 
Path 클래스
| Path.DirectorySeparatorChar | 디렉토리 구분 문자 | 
| Path.Combine | 패스를 합친다. | 
| Path.GetFileName | 파일 이름을 리턴한다. | 
|   |   | 
 
Stream 클래스
-       Stream 클래스는 추상 클래스
-       바이트 단위로 데이터를 처리하는 바이트 스트림 클래스들 중 최 상위 기본 클래스
-       바이트 스트림 클래스
-       파일, 입출력 장치, 프로세스 사이의 통신, Socket 통신 등에서 사용
 
FileStream 클래스
-       파일을 읽고 쓰는 기능을 제공하는 클래스
-       Stream 클래스 상속
-       바이트 스트림에 속함
-       스트림 생성하는 곳은 파일
 
l  파일 쓰기 예제
| String path = @”C:\Test.txt”;   FileStream fs = new FileStream (path, FileMode.Create); StreamWriter sw = new StreamWriter (fs, System.Text.Encoding.Default); sw.BaseStream.Seek (0, SeekOrigin.End);   sw.WriteLine (“-------------------------------“); sw.WriteLine (“테스트 이다.“); sw.WriteLine (“-------------------------------“);   sw.Flush (); sw.Close (); | 
 
 
*. 파일 읽기 예제
| FileStream fs = new FileStream (path, FileMode.OpenOrCreatem, FileAccess.Read);   StreamReader sr = new StreamReader (fs, System.Text.Encoding.Default); sr.BaseStream.Seek (0, SeekOrigin.Begin);   while (sr.Peek () > -1) Console.WriteLine (sr.ReadLine ());   sr.Close (); | 
 
BufferedStream
-       버퍼 기능을 가진 바이트 스트림
-       내부적으로 버퍼 기능을 제공해 주는 스트림
-       입력에 대한 버퍼링과 출력에 대한 버퍼링을 지원
-       버퍼링 BufferedStream 클래스의 Flush () 메서드가 호출되면 한번에 데이터를 쓴다.
 
| FileStream fs = new FileStream (path, FileMode.OpenOrCreatem, FileAccess.Read);   BufferedStream bi = new BufferedStream (fs);   .. 처리   bi.Close (); | 
 
MemoryStream 클래스
-       메모리를 목표지점을 하드웨어적인 장치나 파일이 아닌 메모리를 그 대상으로 하고 있는 바이트 스트림
-       메모리 공간에 상주되어 있는 데이터를 목표지점으로 함
-       부호 없는 바이트 배열로 저장된 데이터를 캡술화 함
| byte [] values = new byte [] {0, 1, 2, 3, 4, 5, 6};   MemoryStream ms = new MemoryStream (values);   int temp = 0;   while ((temp = ms.ReadByte ()) != -1) Console.Write (temp);   ms.Close (); | 
 
 
TextReader & TextWriter 클래스
-       문자 스트림의 입출력을 관장하는 최상위 추상 기본 클래스
-       해당 데이터가 문자라고 가정, 문자의 인코딩을 검사 후 문자의 인코딩에 따라 자동으로 문자 해석
-       C# 에서 사용하는 문자 포멧인 유니코드로 변환
-       하위 클래스들에게 자신들의 메서드를 재정의 해서 사용할 수 있는 역할 제공
-       TextReader : 16비트의 유니코드 형식으로 데이터를 읽음
-       TextWriter : 
 
StringReader, StringWriter 클래스
-       문자열을 스트림에 기록하거나 읽어낼 때 사용하는 클래스
-       목표 지점은 String 형의 데이터
-       TextReader 클래스와 TextWriter 클래스를 각각 상속
 
| String str = “abcdef”;   StringReader s = new StringReader (str); StringWriter w = new StringWriter ();   While ((ch = s.Read ()) != -1) Sw.Write ((char) ch);   s.Close (); w.Close (); | 
 
StreamReader, StreamWriter 클래스
-       바이트 스트림을 문자 스트림으로 바꾸어 주는 역할을 담당하는 스트림
-       기본적으로 TextReader와 TextWriter 에서 상속
 
BinaryReader & BinaryWriter 클래스
-       데이터 타입에 해당하는 메모리 사이즈에 따라서 바이너리 형식으로 읽음
 
스트림을 이용하여 웹페이지 받기
-       스트림을 사용하여 웹페이지를 읽어오는 원리
-       네트워크에 연결된 스트림을 생성 후 그 스트림으로 데이터를 읽어오는 것
-       WebRequest 클래스와 WebResponse 클래스 사용
 
| int length = 1024; char [] buffer = new char [length];   WebRequest req = WebRequest.Create (http://aaaaa); WebResponse res = request.GetResponse ();   StreamReader sr = new StreamReader (response.GetResponseStream (), System.Text.Encoding.Default);   int count = 0;   do { count = sr.Read (buffer, 0, length); Console..WriteLine (buffer); } while (count > 0)   sr.Close (); |