源码丢
using System;
using System.Text;
using System.IO;
namespace CodeConvert
{
class CodeConvert
{
static Encoding srcCode = Encoding.GetEncoding("GB18030");
static Encoding dstCode = Encoding.GetEncoding("shift_jis");
static void Main(string[] args)
{
string folder;
DirectoryInfo dir;
Console.InputEncoding = Encoding.Unicode;
do
{
Console.WriteLine("请输入运行模式");
Console.WriteLine("1:转换单个文件内容");
Console.WriteLine("2:转换单个文件名");
Console.WriteLine("3:转换单个文件夹名");
Console.WriteLine("4:转换目录下所有文件名");
Console.WriteLine("5:转换目录下所有文件夹名...");
string mode = Console.ReadLine();
if (mode == "1" || mode == "2")
{
Console.WriteLine("请输入文件地址...");
Console.WriteLine();
string file = Console.ReadLine();
file = file.Trim(new char[] { '\'', '\"' });
if (File.Exists(file))
{
try
{
if (mode == "1")
WriteContent(file, EncodingConvert(srcCode, dstCode, ReadContent(file)));
else
{
var fi = new FileInfo(file);
fi.MoveTo(Path.Combine(fi.DirectoryName, EncodingConvert(srcCode, dstCode, fi.Name.Split('.')[0]) + fi.Extension));
}
Console.WriteLine("转换完成");
Console.WriteLine();
Console.WriteLine("----------------------------");
Console.WriteLine();
}
catch
{
Console.WriteLine("未知错误已发生");
Console.WriteLine();
Console.WriteLine("----------------------------");
Console.WriteLine();
}
}
else
{
Console.WriteLine("请输入合法地址!");
Console.WriteLine();
Console.WriteLine("----------------------------");
Console.WriteLine();
}
}
else if (mode == "3")
{
Console.WriteLine("请输入文件夹地址...");
Console.WriteLine();
folder = Console.ReadLine();
folder = folder.Trim(new char[] { '\'', '\"' });
dir = new DirectoryInfo(folder);
if (dir != null)
{
dir.MoveTo(Path.Combine(dir.Parent.FullName, EncodingConvert(srcCode, dstCode, dir.Name)));
Console.WriteLine("转换完成");
Console.WriteLine();
Console.WriteLine("----------------------------");
Console.WriteLine();
}
else
{
Console.WriteLine("请输入合法地址!");
Console.WriteLine();
Console.WriteLine("----------------------------");
Console.WriteLine();
}
}
else if (mode == "4" || mode == "5")
{
Console.WriteLine("请输入父目录路径...");
Console.WriteLine();
folder = Console.ReadLine();
folder = folder.Trim(new char[] { '\'', '\"' });
dir = new DirectoryInfo(folder);
if (dir != null)
{
try
{
if (mode == "4")
{
FileInfo[] fileInfos = dir.GetFiles();
foreach (var item in fileInfos)
{
item.MoveTo(Path.Combine(folder, EncodingConvert(srcCode, dstCode, item.Name.Split('.')[0]) + item.Extension));
}
}
else
{
DirectoryInfo[] dirInfos = dir.GetDirectories();
foreach (var item in dirInfos)
{
item.MoveTo(Path.Combine(folder, EncodingConvert(srcCode, dstCode, item.Name)));
}
}
Console.WriteLine("转换完成");
Console.WriteLine();
Console.WriteLine("----------------------------");
Console.WriteLine();
}
catch
{
Console.WriteLine("未知错误已发生");
Console.WriteLine();
Console.WriteLine("----------------------------");
Console.WriteLine();
}
}
else
{
Console.WriteLine("请输入合法路径!");
Console.WriteLine();
Console.WriteLine("----------------------------");
Console.WriteLine();
}
}
} while (true);
}
/// <summary>
/// 内码转换
/// </summary>
/// <param name="src">源编码格式</param>
/// <param name="dst">目标编码格式</param>
/// <param name="text">源字符串</param>
/// <returns>转换后字符串</returns>
public static string EncodingConvert(Encoding src, Encoding dst, string text)
{
var bytes = src.GetBytes(text);
return dst.GetString(bytes);
}
/// <summary>
/// 读取文件内容
/// </summary>
/// <param name="path">文件路径</param>
/// <returns>文件内容字符串</returns>
public static string ReadContent(string path)
{
string content;
using (StreamReader sr = new StreamReader(path, srcCode))
{
content = sr.ReadToEnd();
sr.Close();
}
return content;
}
/// <summary>
/// 替换文件内容
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="content">新的内容</param>
public static void WriteContent(string path, string content)
{
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Write, FileShare.Write))
{
fileStream.SetLength(0);
using (StreamWriter streamWriter = new StreamWriter(fileStream))
{
streamWriter.Write(content);
fileStream.Flush();
streamWriter.Close();
}
fileStream.Close();
}
}
}
}