자세 한 설명 C\#FileStream 클래스
7475 단어 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 류 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.