English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# FileInfo

 여기서는 FileInfo 클래스를 사용하여 물리 파일에 대한 읽기 작업을 수행하는 방법을 배웁니다./쓰기 작업.

FileInfo 클래스는静态 File 클래스와 같은 기능을 제공하지만, 파일에서字节을 읽거나 쓰는 코드를 수동으로 작성하여 파일의 읽기와 쓰기를 제어할 수 있습니다./쓰기 작업이 더 많은 제어력을 가집니다.

FileInfo의 중요한 속성과 메서드:

속성사용법
Directory부모 디렉토리의 인스턴스를 가져옵니다.
DirectoryName디렉토리의 전체 경로를 나타내는 문자열을 가져옵니다.
Exists파일이 존재하는지 여부를 나타내는 값을 가져옵니다.
Extension파일 확장자를 나타내는 문자열을 가져옵니다.
FullName디렉토리나 파일의 전체 경로를 가져옵니다.
IsReadOnly현재 파일이 읽기 전용인지 여부를 가져오거나 설정합니다.
LastAccessTime현재 파일이나 디렉토리에 대해 마지막으로 접근한 시간을 가져오거나 설정합니다.
LastWriteTime현재 파일이나 디렉토리에 대해 마지막으로 쓰여진 시간을 가져오거나 설정합니다.
Length현재 파일의 크기를(바이트为单位) 가져옵니다.
Name파일 이름을 가져옵니다.
메서드사용법
AppendText文本을 FileInfo의 이 인스턴스가 표시하는 파일에 추가하는 StreamWriter를 생성합니다.
CopyTo기존 파일을 새 파일로 복사하고, 기존 파일을 덮어쓰지 않습니다.
Create파일을 생성합니다.
CreateText새 텍스트 파일에 쓰기 위해 StreamWriter를 생성합니다.
DecryptEncrypt 메서드를 사용하여 현재 계정으로 암호화된 파일을 해독합니다.
Delete지정된 파일을 지웁니다.
Encrypt파일을 암호화하여 암호화된 파일을 해독할 수 있는 계정만 파일을 해독할 수 있습니다.
GetAccessControl지정된 파일의 접근 제어 목록(ACL) 항목을 포장한 FileSecurity 객체를 가져옵니다.
MoveTo지정된 파일을 새 위치로 이동하고, 지정된 새 파일 이름 옵션을 제공합니다.
Open지정된 FileMode에서 하나를 엽니다.
OpenRead읽기 전용 FileStream을 생성합니다.
OpenTextUTF로 생성된8인코딩된 StreamReader이 있으며, 이 인코딩기는 기존 텍스트 파일에서 읽을 수 있습니다.
OpenWrite읽기 전용 FileStream을 생성합니다.
Replace현재 FileInfo 객체로 설명된 파일을 지정된 파일의 내용으로 대체하고, 원래 파일을 지우고 대체 파일의 백업을 생성합니다.
ToString문자열로 반환하는 방법을 보여줍니다

아래 예제에서 파일에서 바이트를 수동으로 읽고 UTF8인코딩을 문자열로 변환합니다:

예제: FileInfo 클래스를 사용하여 파일을 읽기

//为指定路径创建FileInfo对象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
//FileStream의 길이와 같은 크기의 바이트 배열을 생성합니다
byte[] fileBytes = new byte[fs.Length];
//읽을 바이트 수를 확인하기 위해 계산기를 정의합니다. 각 바이트를 읽을 때 계산기를 감소시킵니다
int numBytesToRead = (int)fileBytes.Length;
//읽은 바이트 수를 나타내는 계산기
int numBytesRead = 0;
//FileStream에서 모든 바이트를 읽을 때까지 반복합니다
while (numBytesToRead > 0)
{
    int n = fs.Read(fileBytes, numBytesRead, numBytesToRead);
        
    if (n == 0)
        break;
    numBytesRead +n = n;
    numBytesToRead -n = n;
}
//FileStream에서 모든 바이트를 읽은 후 UTF8인코딩을 문자열로 변환합니다
string filestring = Encoding.UTF8.GetString(fileBytes);

위 코드와 같이 FileStream에서 읽기 위해 많은 코드를 작성해야 합니다/문자열을 쓰면 됩니다. StreamReader와 StreamWriter를 사용하면 같은 읽기 작업을 쉽게 수행할 수 있습니다/쓰기 작업.

아래 예제에서 StreamReader가 파일에서 문자열을 읽는 방법을 쉽게 보여줍니다:

예제: StreamReader를 사용하여 파일을 읽기

//为指定路径创建FileInfo对象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read); 
//FileStream 객체를 처리할 필요가 있는StreamReader 객체를 생성합니다
StreamReader sr = new StreamReader(fs);
//ReadToEnd 메서드를 사용하여 파일에서 모든 내용을 읽습니다
string fileContent = sr.ReadToEnd();
//操作后关闭StreamReader对象
sr.Close();
fs.Close();

注意,fi.Open() 它具有三个参数:

  • 第一个参数是FileMode,用于创建和打开文件(如果文件不存在);

  • 第二个参数 FileAccess 表示读取操作;

  • 第三个参数是在打开文件时与其他用户共享文件以供阅读。

下面的示例显示 StreamWriter 如何使将字符串写入文件变得更容易:

示例:使用StreamWriter将文本写入文件

//为指定路径创建FileInfo对象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read ); 
//创建StreamWriter对象以将字符串写入FileSream
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("streamwriter에서 다른 줄");
sw.Close();

不能同时对同一个 FileStream 对象执行读和写操作。如果您已经在读取文件,请创建一个单独的 FileStream 对象以写入同一文件,如下所示:

示例:StreamReader和StreamWriter

//为DummyFile.txt创建FileInfo对象
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//打开DummyFile.txt进行读取操作
FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite , FileShare.ReadWrite); 
//打开DummyFile.txt进行写操作
FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
          
//获取StreamReader
StreamReader sr = new StreamReader(fsToRead);
//使用StreamReader对象读取所有文本
string fileContent = sr.ReadToEnd();
sr.Close();
//获取StreamWriter
StreamWriter sw = new StreamWriter(fsToWrite);
//StreamWriter로 글을 씁니다
sw.WriteLine("streamwriter에서 다른 줄");
sw.Close();
//모든 Stream 객체를 닫습니다
fsToRead.Close();
fsToWrite.Close();

따라서 FileInfo, StreamReader 및 StreamWriter 클래스를 사용하여 물리 파일에서 읽을 수 있습니다/내용을 입력하세요。