수색…
스트림 사용
스트림은 데이터를 전송하는 낮은 수준의 수단을 제공하는 객체입니다. 그들 자신은 데이터 컨테이너의 역할을하지 않습니다.
우리가 다루는 데이터는 바이트 배열 ( byte []
) 형식입니다. 읽기 및 쓰기 기능은 모두 바이트 방향입니다 (예 : WriteByte()
.
정수, 문자열 등을 다루기위한 함수는 없습니다. 이것은 스트림을 매우 일반적인 목적으로 만듭니다 만, 말하자면 텍스트를 전송하기를 원할 경우 작업하기가 쉽지 않습니다. 스트림은 대용량 데이터를 처리 할 때 특히 유용 할 수 있습니다.
우리는 쓰기 / 읽기 (즉, 배킹 스토어)가 필요한 곳에 다른 유형의 스트림 기반을 사용해야 할 것입니다. 예를 들어 소스가 파일 인 경우 FileStream
을 사용해야합니다.
string filePath = @"c:\Users\exampleuser\Documents\userinputlog.txt";
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
// do stuff here...
fs.Close();
}
마찬가지로, 배킹 스토어가 메모리 인 경우 MemoryStream
이 사용됩니다.
// Read all bytes in from a file on the disk.
byte[] file = File.ReadAllBytes(“C:\\file.txt”);
// Create a memory stream from those bytes.
using (MemoryStream memory = new MemoryStream(file))
{
// do stuff here...
}
마찬가지로 System.Net.Sockets.NetworkStream
은 네트워크 액세스에 사용됩니다.
모든 스트림은 제네릭 클래스 System.IO.Stream
에서 파생됩니다. 스트림에서 데이터를 직접 읽거나 쓸 수 없습니다. .NET Framework는 네이티브 형식과 하위 수준 스트림 인터페이스간에 변환하고 스트림에서 또는 스트림에서 데이터를 전송하는 StreamReader
, StreamWriter
, BinaryReader
및 BinaryWriter
와 같은 도우미 클래스를 제공합니다.
스트림 읽기 및 쓰기는 StreamReader
및 StreamWriter
를 통해 수행 할 수 있습니다. 하나는 이것을 닫을 때 조심해야합니다. 기본적으로 닫히면 포함 된 스트림도 닫히고 더 이상 사용할 수 없도록 만듭니다. 이 기본 동작은 bool leaveOpen
매개 변수가 있고 해당 값을 true
로 설정하는 생성자 를 사용하여 변경할 수 있습니다.
StreamWriter
:
FileStream fs = new FileStream("sample.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
string NextLine = "This is the appended line.";
sw.Write(NextLine);
sw.Close();
//fs.Close(); There is no need to close fs. Closing sw will also close the stream it contains.
StreamReader
:
using (var ms = new MemoryStream())
{
StreamWriter sw = new StreamWriter(ms);
sw.Write(123);
//sw.Close(); This will close ms and when we try to use ms later it will cause an exception
sw.Flush(); //You can send the remaining data to stream. Closing will do this automatically
// We need to set the position to 0 in order to read
// from the beginning.
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
var myStr = sr.ReadToEnd();
sr.Close();
ms.Close();
}
Classes Stream
, StreamReader
, StreamWriter
등은 IDisposable
인터페이스를 구현 IDisposable
클래스의 객체에 대해 Dispose()
메소드를 호출 할 수 있습니다.