文件操作

来源:互联网 发布:工作总结 知乎 编辑:程序博客网 时间:2024/06/06 20:59

 //挪文件
        public string CopyFiles(string varFromDirectory, string varToDirectory)
        {
            try
            {
                //实现从一个目录下完整拷贝到另一个目录下。
                string m_eorrStr = "";
                if (!Directory.Exists(varToDirectory))
                {
                    Directory.CreateDirectory(varToDirectory);
                }
                if (!Directory.Exists(varFromDirectory))
                {
                    m_eorrStr = "对不起,您要拷贝的目录不存在。 ";
                    return "";
                }

                DirectoryInfo dirInfo = new DirectoryInfo(varFromDirectory);

                FileInfo[] files = dirInfo.GetFiles();

                foreach (FileInfo file in files)
                {
                    if (!file.Name.Contains("ok"))
                    {
                        if (File.Exists(varToDirectory + "//" + file.Name))
                        {
                            File.Delete(varToDirectory + "//" + file.Name);
                        }
                        file.CopyTo(varToDirectory + "//" + file.Name, false);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return string.Empty;
        }

        /// <summary>
        /// 拷贝文件夹       
        /// </summary>
        /// <param name="srcdir"></param>
        /// <param name="desdir"></param>
        public void CopyDirectory(string srcdir, string desdir)
        {
            string folderName = srcdir.Substring(srcdir.LastIndexOf("//") + 1);

            string desfolderdir = desdir + "//" + folderName;

            if (desdir.LastIndexOf("//") == (desdir.Length - 1))
            {
                desfolderdir = desdir + folderName;
            }
            string[] filenames = Directory.GetFileSystemEntries(srcdir);

            foreach (string file in filenames)// 遍历所有的文件和目录
            {
                if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
                {

                    string currentdir = desfolderdir + "//" + file.Substring(file.LastIndexOf("//") + 1);
                    if (!Directory.Exists(currentdir))
                    {
                        Directory.CreateDirectory(currentdir);
                    }

                    CopyDirectory(file, desfolderdir);
                }

                else // 否则直接copy文件
                {
                    string srcfileName = file.Substring(file.LastIndexOf("//") + 1);

                    srcfileName = desfolderdir + "//" + srcfileName;


                    if (!Directory.Exists(desfolderdir))
                    {
                        Directory.CreateDirectory(desfolderdir);
                    }


                    File.Copy(file, srcfileName);
                }
            }
        }

        /// <summary>
        /// 删除文件夹
        /// </summary>
        /// <param name="dir"></param>
        public void DeleteFolder(string dir)
        {
            // 循环文件夹里面的内容  
            foreach (string f in Directory.GetFileSystemEntries(dir))
            {
                // 如果是文件存在  
                if (File.Exists(f))
                {                   
                    // 直接删除其中的文件  
                    File.Delete(f);
                }
                else
                {
                    // 如果是文件夹存在  
                    // 递归删除子文件夹  
                    DeleteFolder(f);
                }
            }
            // 删除已空文件夹  
            Directory.Delete(dir);
        }