C# 튜토리얼login
C# 튜토리얼
작가:php.cn  업데이트 시간:2022-04-11 14:06:23

C# 파일 입력 및 출력



A file은 지정된 이름과 디렉터리 경로로 디스크에 저장된 데이터 모음입니다. 파일을 읽거나 쓰기 위해 열면 stream이 됩니다.

기본적으로 스트림은 통신 경로를 통해 전달되는 일련의 바이트입니다. 두 가지 주요 스트림이 있습니다: 입력 스트림출력 스트림. 입력 스트림은 파일에서 데이터를 읽는 데 사용되며(읽기 작업), 출력 스트림은 파일에 데이터를 쓰는 데 사용됩니다(쓰기 작업).

C# I/O 클래스

System.IO 네임스페이스에는 파일 생성 및 삭제, 파일 읽기 또는 쓰기, 파일 닫기 등과 같은 다양한 파일 작업을 수행하는 데 사용되는 다양한 클래스가 있습니다.

다음 표에는 System.IO 네임스페이스에서 일반적으로 사용되는 일부 비추상 클래스가 나열되어 있습니다.

I/O 클래스 Description
BinaryReader이진 스트림에서 원시 데이터를 읽습니다.
BinaryWriter원시 데이터를 바이너리 형식으로 씁니다.
BufferedStream바이트 스트림의 임시 저장 공간입니다.
Directory는 디렉토리 구조를 조작하는 데 도움이 됩니다.
DirectoryInfo은 디렉터리에 대한 작업을 수행하는 데 사용됩니다.
DriveInfo는 드라이브 정보를 제공합니다.
File은 파일 처리에 도움이 됩니다.
FileInfo은 파일 작업을 수행하는 데 사용됩니다.
FileStream은 파일의 어느 곳에서나 읽고 쓰는 데 사용됩니다.
MemoryStream은 메모리에 저장된 데이터 스트림에 대한 무작위 액세스에 사용됩니다.
Path경로 정보에 대한 작업을 수행합니다.
StreamReader은 바이트 스트림에서 문자를 읽는 데 사용됩니다.
StreamWriter은 스트림에 문자를 쓰는 데 사용됩니다.
StringReader은 문자열 버퍼를 읽는 데 사용됩니다.
StringWriter은 문자열 버퍼를 쓰는 데 사용됩니다.

FileStream 클래스

System.IO 네임스페이스의 FileStream 클래스는 파일 읽기, 쓰기 및 닫기를 용이하게 합니다. 이 클래스는 추상 클래스 Stream에서 파생됩니다.

새 파일을 만들거나 기존 파일을 열려면 FileStream 개체를 만들어야 합니다. FileStream 객체를 생성하는 구문은 다음과 같습니다.

FileStream <object_name> = new FileStream( <file_name>,
<FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

예를 들어 sample.txt라는 파일을 읽으려면 FileStream 객체 F를 생성합니다.

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
ParametersDescription
FileMo de

FileMode 열거형은 파일을 여는 다양한 방법을 정의합니다. FileMode 열거형의 멤버는 다음과 같습니다:

  • Append: 기존 파일을 열고 파일 끝에 커서를 놓습니다. 파일이 없으면 파일이 생성됩니다.

  • Create: 새 파일을 만듭니다. 파일이 이미 존재하는 경우 기존 파일을 삭제하고 새 파일이 생성됩니다.

  • CreateNew: 운영 체제가 새 파일을 생성하도록 지정합니다. 파일이 이미 존재하는 경우 예외가 발생합니다.

  • Open: 기존 파일을 엽니다. 파일이 존재하지 않으면 예외가 발생합니다.

  • OpenOrCreate: 운영 체제가 기존 파일을 열어야 함을 지정합니다. 파일이 존재하지 않으면 지정된 이름으로 새 파일이 생성되어 열립니다.

  • Truncate: 기존 파일을 엽니다. 파일이 열리면 0바이트 크기로 잘립니다. 그런 다음 완전히 새로운 데이터를 파일에 쓸 수 있지만 파일의 원래 생성 날짜는 유지됩니다. 파일이 존재하지 않으면 예외가 발생합니다.

FileAccess

FileAccess 열거형의 멤버는 Read, ReadWriteWrite입니다.

FileShare

FileShare 열거형의 멤버는 다음과 같습니다.

  • Inheritable: 파일 핸들을 하위 프로세스에서 상속할 수 있습니다. Win32는 이 기능을 직접 지원하지 않습니다.

  • None: 현재 파일을 공유하지 않습니다. 파일 열기 요청(이 프로세스 또는 다른 프로세스의)은 파일이 닫힐 때까지 실패합니다.

  • Read: 이후에 읽기 위해 파일을 열 수 있습니다. 이 플래그를 지정하지 않으면 (이 프로세스 또는 다른 프로세스에서) 읽기 위해 파일을 여는 요청은 파일이 닫힐 때까지 실패합니다. 그러나 이 플래그를 지정하더라도 파일에 액세스하려면 추가 권한이 필요할 수 있습니다.

  • ReadWrite: 이후에 파일을 읽거나 쓰기 위해 열 수 있습니다. 이 플래그를 지정하지 않으면 파일을 읽거나 쓰기 위해(이 프로세스 또는 다른 프로세스에서) 파일을 여는 요청은 파일이 닫힐 때까지 실패합니다. 그러나 이 플래그를 지정하더라도 파일에 액세스하려면 추가 권한이 필요할 수 있습니다.

  • Write: 쓰기를 위해 이후에 파일을 열 수 있습니다. 이 플래그를 지정하지 않으면 (이 프로세스 또는 다른 프로세스에서) 쓰기 위해 파일을 여는 요청은 파일이 닫힐 때까지 실패합니다. 그러나 이 플래그를 지정하더라도 파일에 액세스하려면 추가 권한이 필요할 수 있습니다.

  • Delete: 이후에 파일을 삭제할 수 있습니다.

예제

다음 프로그램은 FileStream 클래스의 사용법을 보여줍니다.

using System;
using System.IO;

namespace FileIOApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream F = new FileStream("test.dat", 
            FileMode.OpenOrCreate, FileAccess.ReadWrite);

            for (int i = 1; i <= 20; i++)
            {
                F.WriteByte((byte)i);
            }

            F.Position = 0;

            for (int i = 0; i <= 20; i++)
            {
                Console.Write(F.ReadByte() + " ");
            }
            F.Close();
            Console.ReadKey();
        }
    }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

C# 고급 파일 작업

위의 예는 C#의 간단한 파일 작업을 보여줍니다. 그러나 C# System.IO 클래스의 기능을 최대한 활용하려면 이러한 클래스에서 일반적으로 사용되는 속성과 메서드를 알아야 합니다.

다음 섹션에서는 이러한 클래스와 해당 클래스가 수행하는 작업에 대해 설명합니다. 각 부분에 대해 자세히 알아보려면 링크를 클릭하세요.

TopicDescription
텍스트 파일 읽기 및 쓰기텍스트 파일 읽기 및 쓰기가 포함됩니다. StreamReaderStreamWriter 클래스는 텍스트 파일을 읽고 쓰는 데 도움이 됩니다.
바이너리 파일 읽기 및 쓰기바이너리 파일 읽기 및 쓰기가 포함됩니다. BinaryReaderBinaryWriter 클래스는 바이너리 파일을 읽고 쓰는 데 도움이 됩니다.
Windows 파일 시스템 운영이를 통해 C# 프로그래머는 Windows 파일 및 디렉터리를 탐색하고 찾을 수 있습니다.

PHP 중국어 웹사이트