>백엔드 개발 >C++ >C#에서 파일을 동시에 읽고 쓰는 방법은 무엇입니까?

C#에서 파일을 동시에 읽고 쓰는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-06 07:05:44439검색

How to Simultaneously Read and Write to a File in C#?

C#에서 파일을 읽고 쓰는 방법

C#에서 파일 작업을 할 때 읽기와 쓰기가 모두 필요한 경우가 많습니다. 그들에게. 그러나 동일한 파일에 대해 StreamReader 및 StreamWriter를 생성하는 것만으로는 파일이 읽기 전용 모드로 열리므로 작동하지 않습니다.

파일을 동시에 읽고 쓰려면 단일 스트림을 사용해야 합니다. 두 작업 모두에 대해 열립니다. 이는 FileStream 클래스를 사용하여 달성할 수 있습니다.

FileStream fileStream = new FileStream(
    @"c:\words.txt", FileMode.OpenOrCreate, 
    FileAccess.ReadWrite, FileShare.None);

FileStream 생성자는 다음 인수를 사용합니다.

  • 파일 경로.
  • FileMode, 파일을 생성, 열거나 추가할지 여부를 지정합니다.
  • 파일을 읽을 수 있는지 여부를 지정하는 FileAccess 원본, 쓰기 또는 둘 다.
  • 파일을 다른 프로세스와 공유할 수 있는 방법을 지정하는 FileShare.

이 경우 OpenOrCreate 모드에서 파일을 엽니다. , 이는 파일이 아직 존재하지 않는 경우 생성된다는 의미입니다. 또한 ReadWrite 액세스로 파일을 열었습니다. 즉, 파일을 읽고 쓸 수 있습니다. 마지막으로 파일이 다른 프로세스와 공유되지 않도록 지정하고 있습니다.

FileStream을 생성한 후에는 이를 사용하여 각각 Read 및 Write 메서드를 사용하여 파일을 읽고 쓸 수 있습니다.

다음 예는 FileStream:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        // Open the file in read/write mode.
        FileStream fileStream = new FileStream(
            @"c:\words.txt", FileMode.OpenOrCreate, 
            FileAccess.ReadWrite, FileShare.None);

        // Read the file.
        StreamReader reader = new StreamReader(fileStream);
        string line = reader.ReadLine();
        while (line != null)
        {
            Console.WriteLine(line);
            line = reader.ReadLine();
        }

        // Write to the file.
        StreamWriter writer = new StreamWriter(fileStream);
        writer.WriteLine("This is a test.");

        // Close the file.
        fileStream.Close();
    }
}

이 예에서는 "words.txt" 파일을 읽기/쓰기 모드로 엽니다. 그런 다음 파일을 읽고 해당 내용을 콘솔에 인쇄합니다. 마지막으로 "This is a test"라는 문자열을 작성합니다. 파일에.

위 내용은 C#에서 파일을 동시에 읽고 쓰는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.