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
最終更新:2009年03月08日 20:38