文件操作辅助类

项目工程中使用的,可以保证可用性以及准确性。。。。。 处了文件压缩解压 没用过其他组件 文件压缩解压缩使用Ionic.Zip.dll自行下载就好

public interface IFileOperation
    {
        /// <summary>
        ///  删除文件
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns></returns>
        bool DelFile(string filePath);

        /// <summary>
        /// 删除文件目录
        /// </summary>
        /// <param name="dirPath">目录地址</param>
        /// <returns></returns>
        bool DelDirectory(string dirPath);

        /// <summary>
        /// 创建文件
        /// </summary>
        /// <param name="filePath">文件地址</param>
        /// <returns></returns>
        bool CreateFile(string filePath);

        /// <summary>
        /// 创建文件目录
        /// </summary>
        /// <param name="dirPath">目录地址</param>
        /// <returns></returns>
        bool CreateDirectory(string dirPath);

        /// <summary>
        /// 复制文件
        /// </summary>
        /// <param name="filePath">原文件地址</param>
        /// <param name="targetFilePath">目标文件地址</param>
        /// <param name="overwrite">是否允许覆盖相同名称文件</param>
        /// <returns></returns>
        bool CopyFile(string filePath, string targetFilePath, bool overwrite);

        /// <summary>
        /// 复制文件夹
        /// </summary>
        /// <param name="dirPath">待复制文件目录</param>
        /// <param name="targetDirPath">目标文件目录</param>
        /// <param name="DirFirst">是否保留文件第一级目录</param>
        /// <returns></returns>
        bool CopyDirectroy(string dirPath, string targetDirPath, bool dirFirst);

        /// <summary>
        /// 移动文件
        /// </summary>
        /// <param name="filePath">原文件地址</param>
        /// <param name="targetFilePath">目标文件地址</param>
        /// <returns></returns>
        bool MoveFile(string filePath, string targetFilePath);

        /// <summary>
        /// 移动制文件目录
        /// </summary>
        /// <param name="dirPath">原目录</param>
        /// <param name="targetDirPath">目标目录</param>
        /// <returns></returns>
        bool MoveDirectroy(string dirPath, string targetDirPath);

        /// <summary>
        /// 文件压缩
        /// </summary>
        /// <param name="strFileToCompress">待压缩文件</param>
        /// <param name="strCompressZipPath">压缩到目标文件</param>
        bool ExeCompression(string strFileToCompress, string strCompressZipPath);
     
        /// <summary>
        /// 解压缩文件
        /// </summary>
        /// <param name="strFileToCompress">待解压缩文件</param>
        /// <param name="strCompressZipPath">解压缩到目标文件</param>
        bool ExeDecompression(string strDecompressionZipPath, string strDecompressionPath);

        /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="strUrl">下载文件的地址</param>
        /// <param name="strPath">下载后保存的地址</param>
        void DownloadFile(string strUrl, string strPath);
    }

 

上面是接口下面是实现类

 public class FileOperationImpl : IFileOperation
    {
        private string module = "FileManager.cs";
        private IWriteLog logWrite = new WriteLog();

        /// <summary>
        /// 删除文件
        /// </summary>
        /// <param name="filePath">待删除文件目录</param>
        /// <returns></returns>
        public bool DelFile(string filePath)
        {
            bool result = false;
            try
            {
                // 检查文件是否存在
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                    result = true;
                }
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on DelFile modules: {0}.", ex.Message);
            }
            return result;
        }

        /// <summary>
        /// 删除目录
        /// </summary>
        /// <param name="dirPath">待删除目录</param>
        /// <returns></returns>
        public bool DelDirectory(string dirPath)
        {
            bool result = false;
            try
            {
                // 检查目录是否存在
                if (Directory.Exists(dirPath))
                {
                    Directory.Delete(dirPath, true);
                    result = true;
                }
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on DelDirectory modules: {0}.", ex.Message);
            }
            return result;
        }

        /// <summary>
        /// 创建文件
        /// </summary>
        /// <param name="filePath">待创建文件</param>
        /// <returns></returns>
        public bool CreateFile(string filePath)
        {
            bool result = false;
            try
            {
                File.Create(filePath);
                result = true;
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on CreateFile modules: {0}.", ex.Message);
            }
            return result;
        }

        /// <summary>
        /// 创建目录
        /// </summary>
        /// <param name="dirPath">待创建目录</param>
        /// <returns></returns>
        public bool CreateDirectory(string dirPath)
        {
            bool result = false;
            try
            {
                if (!Directory.Exists(dirPath))
                {
                    Directory.CreateDirectory(dirPath);
                }
                result = true;
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on CreateDirectory: {0}.", ex.Message);
            }
            return result;
        }

        /// <summary>
        /// 文件复制
        /// </summary>
        /// <param name="filePath">待复制文件</param>
        /// <param name="targetFilePath">复制到目标地址</param>
        /// <returns></returns>
        public bool CopyFile(string filePath, string targetFilePath, bool overwrite)
        {
            bool result = false;
            try
            {
                if (File.Exists(filePath))
                {
                    // 复制并允许覆盖
                    File.Copy(filePath, targetFilePath, overwrite);
                    result = true;
                }
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on CopyFile: {0}.", ex.Message);
            }
            return result;
        }

        /// <summary>
        /// Get Directory Name
        /// </summary>
        /// <returns>int</returns>
        public int DirectoryName(string directoryPath)
        {
            // 获取文件夹名,截取“\” 
            int j = 0;
            j = directoryPath.LastIndexOf("\\");
            return j + 1;
        }

        /// <summary>
        /// 复制文件夹
        /// </summary>
        /// <param name="dirPath">待复制文件目录</param>
        /// <param name="targetDirPath">目标文件目录</param>
        /// <param name="dirFirst">是否保留文件第一级目录</param>
        /// <returns></returns>
        public bool CopyDirectroy(string dirPath, string targetDirPath, bool dirFirst)
        {
            bool result = false;
            try
            {
                // 获取文件夹名
                string s = dirPath.Substring(DirectoryName(dirPath));

                DirectoryInfo directoryArray = new DirectoryInfo(dirPath);

                // 获取该文件夹下的文件列表     
                FileInfo[] files = directoryArray.GetFiles();

                // 获取该文件夹下的文件夹列表 
                DirectoryInfo[] directorys = directoryArray.GetDirectories();

                if (!dirFirst)
                {
                    if (Directory.Exists(targetDirPath))
                    {
                        // 若文件夹存在,不管目录是否为空,删除 
                        Directory.Delete(targetDirPath, true);

                        // 删除后,重新创建文件夹    
                        Directory.CreateDirectory(targetDirPath);
                    }
                    else
                    {
                        // 文件夹不存在,创建     
                        Directory.CreateDirectory(targetDirPath);
                    }

                    // 逐个复制文件     
                    foreach (FileInfo inf in files)
                    {
                        File.Copy(dirPath + "\\" + inf.Name, targetDirPath + "\\" + inf.Name);
                    }

                    // 逐个获取文件夹名称,并递归调用方法本身     
                    foreach (DirectoryInfo dir in directorys)
                    {
                        CopyDirectroy(dirPath + "\\" + dir.Name, targetDirPath, true);
                    }
                }
                else
                {
                    if (Directory.Exists(targetDirPath + "\\" + s))
                    {
                        // 若文件夹存在,不管目录是否为空,删除 
                        Directory.Delete(targetDirPath + "\\" + s, true);

                        // 删除后,重新创建文件夹 
                        Directory.CreateDirectory(targetDirPath + "\\" + s);
                    }
                    else
                    {
                        // 文件夹不存在,创建     
                        Directory.CreateDirectory(targetDirPath + "\\" + s);
                    }

                    // 逐个复制文件     
                    foreach (FileInfo inf in files)
                    {
                        File.Copy(dirPath + "\\" + inf.Name, targetDirPath + "\\" + s + "\\" + inf.Name);
                    }

                    // 逐个获取文件夹名称,并递归调用方法本身     
                    foreach (DirectoryInfo dir in directorys)
                    {
                        CopyDirectroy(dirPath + "\\" + dir.Name, targetDirPath + "\\" + s, true);
                    }
                }
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on CopyDirectroy: {0}.", ex.Message);
            }

            return result;
        }

        /// <summary>
        /// 文件移动
        /// </summary>
        /// <param name="filePath">待移动文件</param>
        /// <param name="targetFilePath">移动到目标地址</param>
        /// <returns></returns>
        public bool MoveFile(string filePath, string targetFilePath)
        {
            bool result = false;
            try
            {
                if (File.Exists(filePath))
                {
                    File.Move(filePath, targetFilePath);
                    result = true;
                }
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on MoveFile: {0}.", ex.Message);
            }
            return result;
        }

        /// <summary>
        /// 目录移动
        /// </summary>
        /// <param name="dirPath">待移动目录</param>
        /// <param name="targetDirPath">移动到目标地址</param>
        /// <returns></returns>
        public bool MoveDirectroy(string dirPath, string targetDirPath)
        {
            bool result = false;
            try
            {
                if (Directory.Exists(dirPath))
                {
                    Directory.Move(dirPath, targetDirPath);
                    result = true;
                }
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on MoveDirectroy: {0}.", ex.Message);
            }
            return result;
        }

        /// <summary>
        /// 文件压缩
        /// </summary>
        /// <param name="strFileToCompress">待压缩文件</param>
        /// <param name="strCompressZipPath">压缩到目标文件</param>
        public bool ExeCompression(string strFileToCompress, string strCompressZipPath)
        {
            bool result = false;
            try
            {
                using (ZipFile zipOperation = new ZipFile(strCompressZipPath, System.Text.Encoding.Default))
                {
                    if (File.Exists(strFileToCompress))
                        zipOperation.AddFile(strFileToCompress, string.Empty);
                    else
                        zipOperation.AddDirectory(strFileToCompress);
                    zipOperation.Save();
                    zipOperation.Dispose();
                    result = true;
                }
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on ExeCompression: {0}.", ex.Message);
            }

            return result;
        }

        /// <summary>
        /// 解压缩文件
        /// </summary>
        /// <param name="strFileToCompress">待解压缩文件</param>
        /// <param name="strCompressZipPath">解压缩到目标文件</param>
        public bool ExeDecompression(string strDecompressionZipPath, string strDecompressionPath)
        {
            bool result = false;
            try
            {
                using (ZipFile zipOperation = new ZipFile(strDecompressionZipPath, System.Text.Encoding.Default))
                {
                    zipOperation.ExtractAll(strDecompressionPath);
                    result = true;
                }
            }
            catch (Exception ex)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                      "Error on ExeDecompression: {0}.", ex.Message);
            }
            return result;
        }

        /// <summary>
        /// Download File
        /// </summary>
        /// <param name="strUrl">strUrl</param>
        /// <param name="strPath">strPath 例如C:/Document/</param>
        public void DownloadFile(string strUrl, string strPath)
        {
            try
            {
                string SEPARATOR = "\\";

                string pathFlag = "/";

                int index = strUrl.LastIndexOf("/");

                String fileName = strUrl.Substring(index + 1);

                if (strPath.EndsWith(SEPARATOR) || strPath.EndsWith(pathFlag))
                {
                    strPath = strPath + fileName;
                }
                else
                {
                    strPath = strPath + SEPARATOR + fileName;
                }

                FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream stream = response.GetResponseStream();

                int bufSize = 1048576; // 1Mb

                byte[] buffer = new byte[bufSize];

                int bytesRead = 0;

                while ((bytesRead = stream.Read(buffer, 0, bufSize)) > 0)
                {
                    fs.Write(buffer, 0, bytesRead);
                }

                stream.Close();
                fs.Close();
                response.Close();

            }
            catch (WebException WebExcp)
            {
                logWrite.Log(LogConstant.LogType.Exception, module,
                         "DownloadFile. Message: {0}", WebExcp.Message);
                throw WebExcp;
            }
        }
    }

 

posted @ 2014-06-23 14:35  不起名字了  阅读(298)  评论(0编辑  收藏  举报