C# - 指定したファイルに書き込みできるか、確認する

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 System;
using System.IO;


bool result = isWritableFile("D:\\test.csv");
if (result == true)
{
    Console.WriteLine("書き込みできます。");
}
else
{
    Console.WriteLine("書き込みできません。");
}
読み取り専用のファイル が 書き込みできるか 確認 ファイル-プロパティ-読み取り専用 結果は 書き込み不可 実行結果-開けない

検証環境

関連ページ