MRが楽しい

MRやVRについて学習したことを書き残す

C#でディレクトリの生成/削除/移動を行う

本日はC#の小ネタ枠です。
C#ディレクトリの生成/削除/移動を行う方法です。

System.IO.Directory

System.IO.Directoryの各種メソッドを利用してディレクトリの生成/削除/移動を行うことができます。
learn.microsoft.com

ディレクトリの生成にはCreateDirectoryメソッドを利用します。

var newDirectory = Path.Combine(DocumentFolderPath, "new");
System.IO.Directory.CreateDirectory(newDirectory);

ディレクトリの削除にはDeleteメソッドを利用します。

var targetDirectory = Path.Combine(DocumentFolderPath, "target");
System.IO.Directory.Delete(targetDirectory);

ディレクトリの移動にはMoveメソッドを利用します。

var targetDirectory = Path.Combine(DocumentFolderPath, "target");
var moveDirectory = Path.Combine(DocumentFolderPath, "move");
System.IO.Directory.Move(originDirectory, moveDirectory);

サンプルスクリプト

マイドキュメントフォルダでディレクトリの生成/削除/移動を行う以下のサンプルスクリプトを作成しました。
・DirectoryControl.cs

using System.IO;
using UnityEngine;

public class DirectoryControl : MonoBehaviour
{
    private string DocumentFolderPath => System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
    private string documentFolderPath;
    
    // フォルダを作成する
    [ContextMenu("CreateFolder")]
    public void CreateFolder()
    {
        // ディレクトリが存在しない場合はディレクトリを作成する
        var newDirectory = Path.Combine(DocumentFolderPath, "AlphaDirectory");
        if (!Directory.Exists(newDirectory)) System.IO.Directory.CreateDirectory(newDirectory);
        Debug.Log($"Create Folder: {newDirectory}");
    }
    
    // フォルダを削除する
    [ContextMenu("DeleteFolder")]
    public void DeleteFolder()
    {
        // ディレクトリが存在している場合はディレクトリを削除する
        var targetDirectory = Path.Combine(DocumentFolderPath, "AlphaDirectory");
        if (Directory.Exists(targetDirectory)) System.IO.Directory.Delete(targetDirectory);
        Debug.Log($"Delete Folder: {targetDirectory}");
    }
    
    // フォルダを移動(名前変更)する
    [ContextMenu("MoveFolder")]
    public void MoveFolder()
    {
        // ディレクトリが存在している場合はディレクトリを移動する
        var originDirectory = Path.Combine(DocumentFolderPath, "AlphaDirectory");
        var moveDirectory = Path.Combine(DocumentFolderPath, "BetaDirectory");
        if (Directory.Exists(originDirectory) && !Directory.Exists(moveDirectory))
            System.IO.Directory.Move(originDirectory, moveDirectory);
        Debug.Log($"Rename Folder: {originDirectory}");
    }
}

各メソッドを実行するとマイドキュメントフォルダでディレクトリの生成/削除/移動を実行できます。