※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace ReplayFolderSelecter
{
    class Util
    {
        public const string DEFAULT_NICKNAME = "(no nickname)";
 
        public const string NICKNAME_FILE = "_nickname.txt";
 
        public const string MBAC_ROOT = "..";
 
        public const string REPLAY_FOLDER = MBAC_ROOT + "\\Replay";
 
        public static string AvailableFolderName(string name)
        {
            return AvailableFolderName(name, true);
        }
 
        public static string AvailableFolderName(string name, bool f)
        {
            if (f && !Directory.Exists(name))
            {
                return name;
            }
 
            int i;
            for (i = 1; Directory.Exists(name + "_" + i); i++) ;
            return name + "_" + i;
        }
 
        public static string AvailableFileName(string name)
        {
            if (!File.Exists(name))
            {
                return name;
            }
 
            int i;
            for (i = 1; File.Exists(name + "_" + i); i++) ;
            return name + "_" + i;
        }
 
        public static bool YesNo(string message, string title)
        {
            DialogResult result = MessageBox.Show(
                message, title,
                MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            return (result == DialogResult.Yes);
        }
 
        public static void WriteNickname(string folder, string nickname)
        {
            string path = folder + "\\" + NICKNAME_FILE;
            StreamWriter w = new StreamWriter(path, false, System.Text.Encoding.Default);
            w.WriteLine(nickname);
            w.Flush();
            w.Close();
        }
 
        public static string ReadNickname(string folder)
        {
            string path = folder + "\\" + NICKNAME_FILE;
 
            try
            {
                if (!File.Exists(path))
                {
                    WriteNickname(folder, DEFAULT_NICKNAME);
                    return DEFAULT_NICKNAME;
                }
 
                StreamReader r = new StreamReader(path, System.Text.Encoding.Default);
                string s = r.ReadLine();
                r.Close();
                return s;
            }
            catch (IOException)
            {
                return "(???)";
            }
        }
 
        public static bool CleanUp(string path, string nickname)
        {
            string msg =
                "'" + nickname + "' を削除するため、'" + nickname + "' 内のすべてのフォルダを\n"
                + "カレントリプレイフォルダに移動します。本当によろしいですか?";
            if (!YesNo(msg, "削除に伴う作業の確認"))
            {
                return false;
            }
            else
            {
                string[] srcs = Directory.GetDirectories(path);
 
                try
                {
                    foreach (string src in srcs)
                    {
                        int i = src.IndexOf(path) + path.Length + 1;
                        string path0 = Util.REPLAY_FOLDER + "\\" + src.Substring(i);
                        string dest = Util.AvailableFolderName(path0);
                        Directory.Move(src, dest);
                    }
                    return true;
                }
                catch (IOException)
                {
                    MessageBox.Show("リプレイのリネームに失敗しました。\n作業を中断します", "ERROR");
                    return false;
                }
            }
        }
    }
}
 

定数

  • DEFAULT_NICKNAME
  • NICKNAME_FILE (NICKNAME_FILE_PATHとでもするべきか)
  • MBAC_ROOT
  • REPLAY_FOLDER (CURRENT_REPLAY_FOLDERとでもするべきだけど長くて・・・)

staticメソッド

  • AvailableFolderName
  • AvaliableFileName
  • YesNo
  • ReadNickname
  • WriteNickname
  • CleanUp