자세 한 설명 C\#FileStream 클래스

7475 단어 C#FileStream종류
C\#FileStream 클래스
C\#언어 에서 파일 읽 기와 쓰기 흐름 은 FileStream 클래스 를 사용 하여 표시 합 니 다.FileStream 클래스 는 주로 파일 의 읽 기와 쓰기 에 사 용 됩 니 다.일반적인 텍스트 파일 을 읽 을 수 있 을 뿐만 아니 라 이미지 파일,음성 파일 등 서로 다른 형식의 파일 도 읽 을 수 있 습 니 다.File 류 와 달리 파일 을 단계별 로 읽 고 쓸 수 있 으 며 메모리 압력 을 줄 일 수 있 습 니 다.단점 은 수 동 으로 자원 을 닫 고 방출 해 야 한 다 는 것 입 니 다.
FileAccess
FileAccess 매 거 진 형식 은 주로 파일 의 접근 방식 을 설정 하 는 데 사 용 됩 니 다.구체 적 인 매 거 진 값 은 다음 과 같 습 니 다.
    ●  Read:읽 기 전용 으로 파일 을 엽 니 다.
    ●  Write:쓰기 로 파일 을 엽 니 다.
    ●  ReadWrite:읽 기와 쓰기 로 파일 을 엽 니 다.
FileMode
FileMode 매 거 진 형식 은 파일 을 열거 나 만 드 는 방식 을 설정 하 는 데 사 용 됩 니 다.구체 적 인 매 거 진 값 은 다음 과 같 습 니 다.
    ●  Create New:새 파일 을 만 듭 니 다.파일 이 존재 하면 이상 을 던 집 니 다.
    ●  Create:파일 을 만 듭 니 다.파일 이 존재 하지 않 으 면 원래 파일 을 삭제 하고 파일 을 다시 만 듭 니 다.
    ●  Open:존재 하 는 파일 을 열 고 파일 이 존재 하지 않 으 면 이상 을 던 집 니 다.
    ●  OpenOrCreate:이미 존재 하 는 파일 을 엽 니 다.파일 이 존재 하지 않 으 면 파일 을 만 듭 니 다.
    ●  Truncate:이미 존재 하 는 파일 을 열 고 파일 의 내용 을 지우 고 파일 의 생 성 날 짜 를 유지 합 니 다.파일 이 존재 하지 않 으 면 이상 을 던 집 니 다.
    ●   Append:파일 을 열 어서 파일 에 내용 을 추가 합 니 다.파일 이 존재 하지 않 으 면 새 파일 을 만 듭 니 다.
FileShare
FileShare 매 거 진 형식 은 여러 대상 이 같은 파일 에 동시에 접근 할 때의 접근 제 어 를 설정 하 는 데 사 용 됩 니 다.구체 적 인 매 거 진 값 은 다음 과 같 습 니 다.
    ●  None:현재 파일 공 유 를 거부 합 니 다.
    ●  Read:나중에 파일 을 열 어 정 보 를 읽 을 수 있 도록 합 니 다.
    ●  ReadWrite:나중에 파일 을 열 어 정 보 를 읽 을 수 있 도록 합 니 다.
    ●  Write:나중에 파일 을 열 어 정 보 를 쓸 수 있 도록 합 니 다.
    ●  Delete:나중에 파일 을 삭제 할 수 있 습 니 다.
    ●  Inheritable:파일 핸들 을 하위 프로 세 스에 서 계승 할 수 있 도록 합 니 다.
FileOptions
FileOptions 매 거 진 형식 은 파일 의 암호 화 여부,접근 후 삭제 여부 등 을 포함 하여 파일 의 고급 옵션 을 설정 하 는 데 사 용 됩 니 다.구체 적 인 매 거 진 값 은 다음 과 같 습 니 다.
    ●  WriteThrough:지시 시스템 은 모든 중간 캐 시 를 통 해 디스크 에 직접 기록 해 야 합 니 다.
    ●  None:System.IO.FileStream 대상 을 만 들 때 다른 옵션 을 사용 하지 말 라 고 표시 합 니 다.
    ● Encrypted:지시 파일 은 암호 화 되 어 있 으 며 암호 화 에 사용 되 는 같은 사용자 계 정 을 통 해서 만 복호화 할 수 있 습 니 다.
    ●  DeleteOnClose:파일 을 더 이상 사용 하지 않 을 때 자동 으로 삭제 하 라 고 지시 합 니 다.
    ● Sequential Scan:파일 에 처음부터 끝까지 접근 하 라 고 지시 합 니 다.
    ● RandomAccess:무 작위 접근 파일 을 표시 합 니 다.
    ● Asynchronous:지시 파일 은 비동기 읽 기와 쓰기 에 사용 할 수 있 습 니 다.
FileStream 류 의 구조 방법 은 매우 많은 데 여기 서 자주 사용 하 는 구조 방법 을 소개 하 는데 다음 과 같다.
구조 방법
설명 하 다.
FileStream(string path, FileMode mode)
지정 한 경로 의 파일,파일 모드 를 사용 하여 FileStream 클래스 의 인 스 턴 스 를 만 듭 니 다.
FileStream(string path, FileMode mode, FileAccess access)
지정 한 경로 의 파일,파일 열기 모드,파일 접근 모드 를 사용 하여 FileStream 클래스 의 인 스 턴 스 를 만 듭 니 다.
FileStream(string path, FileMode mode, FileAccess access, FileShare share)
지정 한 경로,생 성 모드,읽 기 쓰기 권한,공유 권한 을 사용 하여 FileStream 류 의 새로운 인 스 턴 스 를 만 듭 니 다.
FileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, FileOptions options)
지정 한 경로,생 성 모드,읽 기와 쓰기 권한,공유 권한,다른 파일 옵션 을 사용 하여 FileStream 류 의 인 스 턴 스 를 만 듭 니 다.
  
FileStream
속성 또는 방법
역할.
bool CanRead
속성 만 읽 고 값 을 가 져 옵 니 다.이 값 은 현재 흐름 이 읽 기 를 지원 하 는 지 여 부 를 표시 합 니 다.
bool CanSeek
속성 만 읽 고 값 을 가 져 옵 니 다.이 값 은 현재 흐름 이 검색 을 지원 하 는 지 여 부 를 표시 합 니 다.
bool CanWrite
속성 만 읽 고 값 을 가 져 옵 니 다.이 값 은 현재 흐름 이 기록 을 지원 하 는 지 여 부 를 표시 합 니 다.
bool IsAsync
속성 만 읽 고 값 을 가 져 옵 니 다.이 값 은 FileStream 이 비동기 인지 동기 화 되 었 는 지 표시 합 니 다.
long Length
속성 만 읽 고 바이트 로 표 시 된 흐름 길 이 를 가 져 옵 니 다.
string Name
속성 만 읽 고 구조 방법 에 전 달 된 FileStream 의 이름 가 져 오기
long Position
속성,이 흐름 의 현재 위 치 를 가 져 오 거나 설정 합 니 다.
int Read(byte[] array, int offset, int count)
흐름 에서 바이트 블록 을 읽 고 이 데 이 터 를 주어진 버퍼 에 기록 합 니 다.
int ReadByte()
파일 에서 바이트 하 나 를 읽 고 읽 기 위 치 를 바이트 로 올 립 니 다.
long Seek(lorig offset, SeekOrigin origin)
이 흐름 의 현재 위 치 를 주어진 값 으로 설정 합 니 다.
void Lock(long position, long length)
다른 프로 세 스 가 System.IO.FileStream 을 읽 거나 쓰 는 것 을 방지 합 니 다.
void Unlock(long position, long length)
다른 프로 세 스 가 잠 겨 있 던 파일 의 전부 나 부분 에 접근 할 수 있 도록 합 니 다.
void Write(byte[] array, int offset, int count)
파일 흐름 에 바이트 블록 쓰기
void WriteByte(byte value)
파일 흐름 의 현재 위치 에 바이트 쓰기
File 과 FileStream 의 차이
File 은 정적 클래스 입 니 다.FileStream 은 비정 상 클래스 입 니 다.
File:파일 의 클래스 입 니 다.파일 을 조작 합 니 다.그 내부 에는 파일 에 대한 다양한 작업 이 봉인 되 어 있 습 니 다(MSDN:단일 파일 을 만 들 거나 복사 하거나 삭제 하거나 이동 하거나 열 수 있 는 정적 방법 을 제공 하고 FileStream 대상 을 만 드 는 데 도움 을 줍 니 다).
FileStream:파일 흐름 의 클래스 입 니 다.txt,xml,avi 등 파일 에 대한 내용 기록,읽 기,복사...에 사용 할 도구 입 니 다.
인 스 턴 스 생 성

string path = "D:\\test.txt";

FileStream fileStream1 = **new** FileStream(path, FileMode.Open);

FileStream fileStream2 = **new** FileStream(path, FileMode.Open, FileAccess.Read);

FileStream fileStream3 = **new** FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);

FileStream fileStream4 = **new** FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 10, FileOptions.None);

    //      
    string path = @"D:\\code\\test.txt";
    //   FileStream     
    FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
    //    
    string msg = "11111";
    //           
    byte[] bytes = Encoding.UTF8.GetBytes(msg);
    //          
    fileStream.Write(bytes, 0, bytes.Length);
    //     
    fileStream.Flush();
    //   
    fileStream.Close();

class Program
{
  static void Main(string[] args)
  {
    //      
    string path = @"D:\\code\\test.txt";
    //          
    if (File.Exists(path))
    {
      FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
      //             
      byte[] bytes = new byte[fileStream.Length];
      //      
      fileStream.Read(bytes, 0, bytes.Length);
      //                   
      char[] c = Encoding.UTF8.GetChars(bytes);
      //  
      Console.WriteLine(c);
      //   
      fileStream.Close();
    }
    else
    {
      Console.WriteLine("   !");
    }
  }
}
파일 복사

 public class FileSreamTest
  {
    

    public static void CopyFile(string source,string target)
    {
      //     
      using (FileStream fsRead = new FileStream(source,FileMode.Open,FileAccess.Read))
      {
        //   
        using (FileStream fsWrite = new FileStream(target,FileMode.OpenOrCreate,FileAccess.Write))
        {
           byte[] buffer = new byte[1024*1024*5];

           while (true)
           { 
             //       
            int r= fsRead.Read(buffer,0,buffer.Length);
            if (r==0)
            {
              break;
            }
             //  
             fsWrite.Write(buffer,0,r);
           }
          
        }
      }
    }

  }



  static void Main(string[] args)
    {
     string source =@"E:\    .7z";
     string target=@"C:\Users\CH190006\Desktop\Test\    .7z";
     FileSreamTest.CopyFile(source,target);
      Console.ReadKey();

    }
이상 은 C\#FileStream 류 의 상세 한 내용 을 상세 하 게 설명 하 는 것 입 니 다.C\#FileStream 류 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기