生成代码文件的例子
2015-04-10 21:43:51 访问(1486) 赞(0) 踩(0)
#region 生成代码文件的例子
#region 常用方法
/// <summary>
///
/// </summary>
/// <param name="fileName"></param>
public void CreateDir(string fileName)
{
if (fileName == null || fileName.Length == 0)
return;
FileInfo theInfo = new FileInfo(fileName);
if (!theInfo.Directory.Exists)
theInfo.Directory.Create();
}
/// <summary>
/// 递归循环删除目录(包括删除自己)
/// </summary>
/// <param name="dirName"></param>
public void DeleteDir(string dirName)
{
if (dirName == null || dirName.Length == 0)
throw new Exception("方法:" + MethodBase.GetCurrentMethod().ReflectedType.FullName + " " + MethodBase.GetCurrentMethod().ToString() + " 发生异常:" + "传入参数:string dirName 为null或Trim后为空。");
// 目录不存在,返回 //
if (!Directory.Exists(dirName))
return;
//针对当前目录建立目录引用对象
DirectoryInfo dirInfo = new DirectoryInfo(dirName);
FileSystemInfo[] fileSystemInfo = dirInfo.GetFileSystemInfos();
if (fileSystemInfo != null)
{
//循环判断当前目录下的文件和目录
foreach (FileSystemInfo fsi in fileSystemInfo)
{
//如果是文件
if (fsi is DirectoryInfo)
{
DeleteDir(fsi.FullName);
}
else
{
File.Delete(fsi.FullName);
}
}
}
Directory.Delete(dirInfo.FullName);
}
/// <summary>
/// 写入文件
/// </summary>
/// <param name="fileName"></param>
/// <param name="textValue"></param>
/// <param name="textEncoding"></param>
/// <param name="IsOverwrite"></param>
/// <param name="IsAppend"></param>
public void WriteFile
(
string fileName,
string textValue,
System.Text.Encoding textEncoding,
bool IsOverwrite,
bool IsAppend
)
{
if (fileName == null || fileName.Length == 0)
throw new Exception("方法:" + MethodBase.GetCurrentMethod().ReflectedType.FullName + " " + MethodBase.GetCurrentMethod().ToString() + " 发生异常:" + "传入参数:string fileName 为null或Trim后为空。");
FileInfo info = new FileInfo(fileName);
if (info.Exists)
{
// 文件存在,且不覆盖 //
if (!IsOverwrite)
throw new Exception("方法:" + MethodBase.GetCurrentMethod().ReflectedType.FullName + " " + MethodBase.GetCurrentMethod().ToString() + " 发生异常:文件" + info.FullName + "已存在,并且不允许覆盖。");
// 如果不是追加 //
if (!IsAppend)
File.Delete(info.FullName);
}
else
{
// 创建目录 //
if (!info.Directory.Exists)
{
Directory.CreateDirectory(info.Directory.FullName);
}
}
FileStream fs = null;
StreamWriter m_streamWriter = null;
try
{
//创建一个文件流,用以写入或者创建一个StreamWriter
fs = new FileStream(info.FullName, FileMode.OpenOrCreate, FileAccess.Write);
if (textEncoding == null)
{
m_streamWriter = new StreamWriter(fs);
}
else
{
m_streamWriter = new StreamWriter(fs, textEncoding);
}
m_streamWriter.Flush();
// 使用StreamWriter来往文件中写入内容
if (IsAppend)
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.Write(textValue);
m_streamWriter.Flush();
}
catch (Exception err)
{
throw err;
}
finally
{
if (m_streamWriter != null)
{
m_streamWriter.Flush();
m_streamWriter.Close();
}
if (fs != null)
{
fs.Close();
}
m_streamWriter = null;
fs = null;
}
}
/// <summary>
/// 保存成功后的提示操作
/// </summary>
/// <param name="dirName"></param>
public void MessageBoxShowYesNoCancel(string dirName)
{
DialogResult dg = MessageBox.Show(
"保存成功,是否复制目录或打开目录(点No)?", "选择操作", MessageBoxButtons.YesNoCancel);
if (dg == DialogResult.Cancel)
return;
if (dg == DialogResult.No)
{
System.Diagnostics.Process.Start("explorer.exe", dirName);
return;
}
if (dg == DialogResult.Yes)
{
System.Collections.Specialized.StringCollection stringCollectionValue
= new System.Collections.Specialized.StringCollection();
DirectoryInfo directoryInfoValue = new DirectoryInfo(dirName);
FileSystemInfo[] fsi = directoryInfoValue.GetFileSystemInfos();
if (fsi != null)
{
foreach (FileSystemInfo i in fsi)
{
stringCollectionValue.Add(i.FullName);
}
}
Clipboard.SetFileDropList(stringCollectionValue);
}
}
#endregion
/// <summary>
///
/// </summary>
/// <param name="theResult"></param>
public void WriteFiles(List<FileOutput> theResult)
{
try
{
string outPutDir =
Application.StartupPath + "\\Output\\SlowXFineUIReadClassNameAppOutput";
System.Text.Encoding en = System.Text.Encoding.Unicode;
DeleteDir(outPutDir);
string fileFullName = null;
foreach (FileOutput cr in theResult)
{
if (cr == null)
continue;
fileFullName = outPutDir + "\\" + cr.TheName + ".cs";
if (cr.TheValue == null || cr.TheValue.Length == 0)
{
// 创建空白目录 //
CreateDir(fileFullName);
}
else
{
WriteFile(fileFullName, cr.TheValue, en, true, false);
}
}
// 操作提示 //
MessageBoxShowYesNoCancel(outPutDir);
}
catch (Exception err)
{
MsgForm.MsgShowDialog(err.Message);
}
}
#endregion 生成代码文件的例子
标签:
生成代码文件的例子 


上一条:
下一条:
相关评论
发表评论