C#.NET 입출력 관련 정리

C#/기본 2012. 5. 24. 12:56 Posted by 퓨어레드

닷넷 강의를 듣다가 한번 쯤 정리하고 싶어서 정리 했다. ^^ 필요한 내용임~

 

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 ();

 

 

 

'C# > 기본' 카테고리의 다른 글

웹브라우져 띄우기  (0) 2012.06.22
날짜형 파싱하여 DateTime 형으로 만들기  (0) 2012.06.13
const 와 readonly 의 차이  (0) 2012.05.02
C# 컬렉션 - 1  (0) 2012.05.02
foreach 랑 indexer  (0) 2012.05.02