C# データ ストリームの読み取り操作

C# データ ストリームの読み取り操作

通常、データ ストリームには読み取り操作と書き込み操作があります。
1. 読み取り (読み取り) 操作: ストリーム オブジェクト内のデータを読み取り、別のデータ構造に格納します。
2. 書き込み操作: 別のデータ構造からデータを読み取り、ストリーム オブジェクトに格納します。

1.すべてのファイルタイプの読み取りと書き込み

ファイル ストリーム (FileStream) クラスは、ファイルの読み取りと書き込みに使用されます。

FileStream クラスの構築には多くの形式がありますが、最も一般的に使用されるものは次のとおりです。

public FileStream(string path, FileMode mode, FileAccess access);
其中,path表示将要操作的文件路径,而参数mode和access都是一个枚举值。

FileMode クラスの列挙メンバー:

列挙値 ファイルの存在説明 ファイルが存在しません
追加 オープンとポジションエンド 新しいファイルを作成
作成 ファイルを書き換える 新しいファイルを作成
新しく作る 異常な 新しいファイルを作成
開ける ファイルを開く 異常な
開くか作成する ファイルを開く 新しいファイルを作成
切り捨てる ファイルを 0 バイトに切り捨てます 異常な

FileAccess クラスの列挙メンバー:

列挙値 例証する
読む 読み取り専用モード
書く 書き込み専用モード
読み書き 読み書きモード

C# Getting Started Basics.pdfファイル caseをコピーします

string path = @"C:\Users\Administrator\Desktop\C#入门基础.pdf";
string copyPath = @"C:\Users\Administrator\Desktop\C#入土教程.pdf";
FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read);
FileStream fsWriter = new FileStream(copyPath, FileMode.OpenOrCreate, FileAccess.Write);
while (true)
{
    
    
    byte[] buffer = new byte[1024 * 1024 * 5];//一次读取5M内容
    int r = fsRead.Read(buffer, 0, buffer.Length);//实际读取的有效字节数

    if (r == 0)//读到最后内容
    {
    
    
        break;
    }

    //以ANSI默认格式读取文本内容
    //string tempStr = Encoding.Default.GetString(buffer, 0, r);
    //Console.WriteLine(tempStr);

    fsWriter.Write(buffer, 0, r);
}
//关闭流
fsWriter.Close();
//释放流占用的资源
fsWriter.Dispose();
//关闭流
fsRead.Close();
//释放流占用的资源
fsRead.Dispose();

Console.WriteLine("复制完成.");

C# は [ using ] を使用して、ストリームを自動的に閉じ、ストリームが占有しているリソースを解放します。

string path = @"C:\Users\Administrator\Desktop\C#入门基础.pdf";
string copyPath = @"C:\Users\Administrator\Desktop\C#入土教程.pdf";

//将创建文件流对象的过程写在using当中,会自动关闭流并释放流占用的资源
using (FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
{
    
    
    using (FileStream fsWrite = new FileStream(copyPath, FileMode.OpenOrCreate, FileAccess.Write))
    {
    
    
        while(true)
        {
    
    
            byte[] buffer = new byte[1024 * 1024 * 5];
            int r = fsRead.Read(buffer, 0, buffer.Length);

            if(r == 0)
            {
    
    
                break;
            }

            fsWrite.Write(buffer, 0, r);
        }
    }
}

Console.WriteLine("复制完成.");

2. テキストファイルの読み書き

テキスト ファイルの場合、通常、次の 2 つのクラスが処理に使用されます。
StreamReaderクラスは、テキスト ファイルの内容を直接読み取ることができます。
StreamWriterクラスは、文字や文字列を直接ファイルに書き込めるため、テキストファイルの書き込みに使用するのが一般的です。

StreamRead はテキスト ファイルを読み取ります。

string path = @"C:\Users\Administrator\Desktop\a.txt";
//采用默认ANSI编码格式进行读取
using (StreamReader sr = new StreamReader(path, Encoding.Default))
{
    
    
    //在读取末端进行判断,并循环读取
    while (!sr.EndOfStream)
    {
    
    
        //输出每一行读取的内容
        Console.WriteLine(sr.ReadLine());
    }
}

StreamWriter はテキスト ファイルに書き込みます。

string path = @"C:\Users\Administrator\Desktop\a.txt";
//第二参数:默认false,可以不写,表示覆盖内容。true表示为文件追加内容
using (StreamWriter sw = new StreamWriter(path, true))
{
    
    
    sw.Write("追加内容");
    sw.WriteLine("追加内容");
}
Console.WriteLine("写入完成.");

3. バイナリファイルの読み書き

バイナリ ファイルの場合、通常、次の 2 つのクラスが処理に使用されます。
BinaryReaderクラスはバイナリ ファイルの読み取りに使用され、処理はバイナリ ファイルである必要があります。
BinaryWriterクラスは、バイナリ ファイルの書き込みに使用されます。書き込まれたファイルはバイナリ ファイルではない可能性があります。

BinaryReader はバイナリ ファイルを読み取ります。

string path = @"C:\Users\Administrator\Desktop\a.txt";
using (BinaryWriter bw = new BinaryWriter(new FileStream(path, FileMode.OpenOrCreate)))
{
    
    
    bw.Write("写入内容.");
}
Console.WriteLine("写入成功");

BinaryWriter はファイルに次のように書き込みます。

string path = @"C:\Users\Administrator\Desktop\a.txt";
using (BinaryReader br = new BinaryReader(new FileStream(path, FileMode.OpenOrCreate)))
{
    
    
    Console.WriteLine(br.ReadString());
}

著者のエネルギーが限られているため、記事には間違いや脱落が避けられませんが、専門家やネチズンは私を批判して修正することを歓迎します。

おすすめ

転載: blog.csdn.net/qq_46051312/article/details/123442509