File.Open メソッドで ファイルを書き込みモードで開き、例外が発生しなければ書き込み可能です。
ファイルに書き込みできるか判定する
ファイル存在確認の File.Exists() メソッドのように手軽に確認する手段が無いため、書き込みモードでファイルが開けるか、確認します。ファイルに書き込み可能か、チェックする関数 の例
using System.IO;
/// <summary>
/// ファイルが書き込み可能か、調べる
/// ※ファイルが無い時は「書き込み不可」を返す。
/// </summary>
/// <param name="filePath">ファイル名</param>
/// <returns>true: 書き込み可能 false: 書き込み不可か、ファイルが無い</returns>
bool isWritableFile(string filePath)
{
try
{
// 書き込みモードでファイルを開けるか確認
using (FileStream fp = File.Open(filePath, FileMode.Open, FileAccess.Write))
{
// 開ける
return true;
}
}
catch
{
// 開けない
return false;
}
}
- using を使用しているため、ファイルは自動的に close されます。
サンプル関数の仕様例
using System;
using System.IO;
bool result = isWritableFile("D:\\test.csv");
if (result == true)
{
Console.WriteLine("書き込みできます。");
}
else
{
Console.WriteLine("書き込みできません。");
}
- 1行目: using System は、Console.WriteLine メソッドで結果を出力するのに使用しています。
- 5行目: ファイル "D:\\test.csv" に対して書き込みできるか、確認しています。
検証環境
- .NET 5.0
- Microsoft Visual Studio Professional 2019 Version 16.9.4
- Microsoft Windows 10 Pro Version 20H2 OS Build 19042.964 Experience: Windows Feature Experience Pack 120.2212.2020.0