【.NET/C#】重複しないファイル名を発行する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【.NET/C#】重複しないファイル名を発行する

2024-2-16 |

.NETで重複しないファイル名を発行したい!

概要

.NETで重複しないファイル名を発行する手順を掲載する。

仕様書

環境

  • .NET 8

手順書

重複しないファイル名を取得してコンソールに出力する例。

using System;
using System.IO;

namespace UniqueFileNames
{
    internal class Program
    {
        static string GetUniqueFileName(string path, string ext = "")
        {
            string result = "";

            while (result == "")
            {
                Guid uniqueId = Guid.NewGuid();
                string guid = uniqueId.ToString()

                if (ext == "")
                {
                    result = $"{path}/{guid}";
                }
                else
                {
                    result = $"{path}\/{guid}.{ext}";
                }

                if (File.Exists(result))
                {
                    result = "";
                }
            }

            return result;
        }

        static void Main(string[] args)
        {
            Console.WriteLine(GetUniqueFileName("c:/neko_gazou", "jpg"));
        }
    }
}

実行すると下記のように出力される。

c:/neko_gazou/b7153def-f8ef-486f-8e48-c6c1e9eafe1d.jpg

Guid.NewGuid()でグローバルユニークIDを作って、パスと拡張子をガッチャンコして後に、実際にそのファイルが存在するか確認する。
重複はめったにしないんはずなんだけども、万一ファイルが存在した場合は再度別のグローバルユニークIDを作って繰り返し。

まとめ(感想文)

ユーザーがアップロードした画像の保存とかに使えるかもね!