未経験からC#プログラマーになるならできた方が良いこと ~ファイル操作編~

未経験からプログラマーになるなら出来たらカッコいいことについてをまとめていきたいと思います。

 

第1回目は、「ファイル操作」

 

これはどんな職場に行こうが、絶対に必要になる技術なのでマスターして行って

お、こいつはできるじゃないかと思わせましょう!

 

なぜファイル操作が必要なのか

プログラミングをやるのであればこのファイル操作は避けては通れない道です。

なぜなら、あらゆるソフトウェアで使われているからです。

 

例えば、

エラー処理のためのログの書き出し

その他にも設定ファイルを読み込んだり、顧客や様々なデータをファイルから読み込んだり書き出したりする必要があります。

 

C#からファイルでPythonを呼ぶときなどもそうです。

 

つまり、どんなプロジェクトでもファイル操作をすると言っても過言ではありません。

以上の理由から、まず始めに未経験であるならばファイル操作をマスターして行きましょう。

 

ファイル操作

 

ファイルを開く

まずは、System.IOのFileStreamを使ってファイルを開きます。

System.IO.FileStream FileStm;

try           
{
   // ファイルのパスを変数に格納
   // @を付けることにより、¥がエスケープでなくなります。             
   string filePath = @"C:\test.txt";       

   // FileStreamのインスタンスを作成  
   FileStm = new System.IO.FileStream(
                    filePath, 
                    System.IO.FileMode.Open, 
                    System.IO.FileAccess.Read, 
                    System.IO.FileShare.ReadWrite);
            
}      
catch (Exception ex)         
{         
return;         
}

変数のfilePathに@が使われていますが、これはエスケープ文字「¥」「\」を無効にさせます。

なので、@なしでコーディングしようと思ったら
string filePath = "C:\\test.txt";とコーディングしましょう。
System.IO.FileStreamの引数は、以下のURLに細かな説明があります。
https://docs.microsoft.com/en-us/dotnet/api/system.io.filemode?view=net-5.0

引数を色々変えてテストしてみると理解が深まりますよ!

 

ファイルを読み込む

System.IO.FileStreamで開いたファイルの中身を読み込みます。

System.IO.StreamReader StmRdr;
try
{
    StmRdr = new System.IO.StreamReader(FileStm, Encoding.GetEncoding("UTF-8"));
}
catch (Exception ex)
{
    return;
}


while (!StmRdr.EndOfStream)
{
    string lines = "";
    try
    {
        lines = StmRdr.ReadLine();
    }
    catch (Exception ex)
    {
        return;
    }

}

以下のコードでFileStream(第一引数のFileStm)で開いたものを読み込めます。

StmRdr = new System.IO.StreamReader(FileStm, Encoding.GetEncoding("UTF-8"));

第二引数で文字コードをUTF-8としていますが、Shift-JISを求められたり他の文字コードを求められたりするので

会社でファイル操作をお願いされた場合は、この文字コードも確認すると良いでしょう。

 

System.IO.StreamReaderで作成したインスタンスStmRdrの最後までループを回します。

while (!StmRdr.EndOfStream)

!が頭に付いているのは、falseという意味なので以下のコードと同じ意味になります。

while(false==StmRdr.EndOfStream)

 

ファイルの書き込み

System.IO.StreamWriterを使ってファイルへの書き込みを行う。

System.IO.StreamWriter writer;

try
{
    string filePath = @"C:\output.txt";
    Encoding enc = Encoding.GetEncoding("UTF-8");
    writer = new System.IO.StreamWriter(filePath, false, enc);
    writer.WriteLine("書き込み内容");
    writer.Close();
}
catch (Exception ex)
{
    return;
}

以上のコードを実行するとファイルの作成を行い作成したファイルに任意の文字列を書き込みます。

もう一度実行してしまうと、始めに記載した内容が消えて書き直してしまいます。

 

文字列をファイルに追加で書き込みたい場合は、以下のコードのようにAppendを使用しましょう。

try
{
    string filePath = @"C:\output.txt";
    System.Text.Encoding enc = System.Text.Encoding.GetEncoding("UTF-8");
    System.IO.File.AppendAllText(filePath, "書き込み内容", enc);
}
catch (Exception ex)
{
    return;
}

 

ファイルの移動・コピー

ファイルの移動

try
{
    string from = ""; // コピー元
    string to = "";// コピー先
    System.IO.File.Move(from, to);
}
catch (Exception ex)
{
    return;
}

ファイルのコピー

try
{
    string from = "";
    string to = "";
    System.IO.File.Copy(from, to);
}
catch (Exception ex)
{
    return;
}

以上のコードを使用する場合は、fromとtoにファイルのパスを入力して使用してみてください。

 

ファイルの削除

try
{
    string delFilePath = @"C:\WorkSpace\output.txt";
    System.IO.File.Delete(delFilePath);
}
catch (Exception ex)
{
    return;
}

 

 

まとめ

今回は、ファイルの操作(開く、読み込み、書き込み、移動、コピー、削除)をメインに紹介しました。

ファイル操作は、フォルダ操作と合わせて行うことが多いので次回はフォルダ操作を説明していきたいと思います。

 

https://mazuwakokokara.com/beginner-programmer-need-to-know-folder-control/

 

少しでも駆け出しエンジニアの助けになれれば幸いです。

 

  • B!