C#.NET 입출력 정리
using System;
************************************************************
스트림
입, 출력 작업을 대행해 주는 중간 매개체
- 입, 출력의 대상이 되는 장치에 상관없이 동일한 방법으로 자료 조정
스트림의 종류
- 입력 스트림 : 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 (); |
출처 : http://purred.tistory.com/75
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
[스크랩] [Visual C#] 문자열의 내용을 검색하거나 조작하는 방법 (0) | 2012.09.13 |
---|---|
[C/C++] const와 static의 의미!! (0) | 2012.09.13 |
[C#] 예외처리 (try, catch, finally) (0) | 2012.09.11 |
[C#] 프로세스 죽이기 (Process Kill) (0) | 2012.09.11 |
새창 띄우기 스크립트 (0) | 2012.09.11 |