수색…


스트림 사용

스트림은 데이터를 전송하는 낮은 수준의 수단을 제공하는 객체입니다. 그들 자신은 데이터 컨테이너의 역할을하지 않습니다.

우리가 다루는 데이터는 바이트 배열 ( 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 , BinaryReaderBinaryWriter 와 같은 도우미 클래스를 제공합니다.

스트림 읽기 및 쓰기는 StreamReaderStreamWriter 를 통해 수행 할 수 있습니다. 하나는 이것을 닫을 때 조심해야합니다. 기본적으로 닫히면 포함 된 스트림도 닫히고 더 이상 사용할 수 없도록 만듭니다. 이 기본 동작은 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() 메소드를 호출 할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow