生成代码文件的例子

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 生成代码文件的例子


标签:生成代码文件的例子 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)