/// <summary>
/// 文件有关的操作类
/// </summary>
public class FileOperate
{
    /// <summary>
    /// 删除文件
    /// </summary>
    /// <param name="FileFullPath">文件的全路径.</param>
    /// <returns>bool</returns>
    public bool DeleteFile(string FileFullPath)
    {
        if (File.Exists(FileFullPath) == true) //用静态类判断文件是否存在
        {
            File.SetAttributes(FileFullPath, FileAttributes.Normal); //设置文件的属性为正常(如果文件为只读的话直接删除会报错)
            File.Delete(FileFullPath); //删除文件
            return true;
        }
        else  //文件不存在
        {
            return false;
        }
    }

/// <summary>
    /// 获取文件名(包含扩展名)
    /// </summary>
    /// <param name="FileFullPath">文件全路径</param>
    /// <returns>string</returns>
    public string GetFileName(string FileFullPath)
    {
        if (File.Exists(FileFullPath) == true)
        {
            FileInfo F = new FileInfo(FileFullPath);  //FileInfo类为提供创建、复制、删除等方法
            return F.Name;  //获取文件名(包含扩展名)
        }
        else
        {
            return null;
        }
    }

/// <summary>
    /// 获取文件文件扩展名
    /// </summary>
    /// <param name="FileFullPath">文件全路径</param>
    /// <returns>string</returns>
    public string GetFileExtension(string FileFullPath)
    {
        if (File.Exists(FileFullPath) == true)
        {
            FileInfo F = new FileInfo(FileFullPath);
            return F.Extension;  //获取文件扩展名(包含".",如:".mp3")
           
        }
        else
        {
            return null;
        }
    }

/// <summary>
    /// 获取文件名(可包含扩展名)
    /// </summary>
    /// <param name="FileFullPath">文件全路径</param>
    /// <param name="IncludeExtension">是否包含扩展名</param>
    /// <returns>string</returns>
    public string GetFileName(string FileFullPath, bool IncludeExtension)
    {
        if (File.Exists(FileFullPath) == true)
        {
            FileInfo F = new FileInfo(FileFullPath);
            if (IncludeExtension == true)
            {
                return F.Name;   //返回文件名(包含扩展名)
            }
            else
            {
                return F.Name.Replace(F.Extension, "");  //把扩展名替换为空字符
            }
        }
        else
        {
            return null;
        }
    }

/// <summary>
    /// 根据传来的文件全路径,外部打开文件,默认用系统注册类型关联软件打开
    /// </summary>
    /// <param name="FileFullPath">文件的全路径</param>
    /// <returns>bool</returns>
    public bool OpenFile(string FileFullPath)
    {
        if (File.Exists(FileFullPath) == true)
        {
            System.Diagnostics.Process.Start(FileFullPath);  //打开文件,默认用系统注册类型关联软件打开
            return true;
        }
        else
        {
            return false;
        }
    }

/// <summary>
    /// 获取文件大小
    /// </summary>
    /// <param name="FileFullPath">文件全路径</param>
    /// <returns>string</returns>
    public string GetFileSize(string FileFullPath)
    {
        if (File.Exists(FileFullPath) == true)
        {
            FileInfo F = new FileInfo(FileFullPath);
            long FL = F.Length;
            if (FL > (1024 * 1024 * 1024))  //由大向小来判断文件的大小
            {
                return Math.Round((FL + 0.00) / (1024 * 1024 * 1024), 2).ToString() + " GB";  //将双精度浮点数舍入到指定的小数(long类型与double类型运算,结果会是一个double类型)
            }
            else if (FL > (1024 * 1024))
            {
                return Math.Round((FL + 0.00) / (1024 * 1024), 2).ToString() + " MB";
            }
            else if (FL > 1024)
            {
                return Math.Round((FL + 0.00) / 1024, 2).ToString() + " KB";
            }
            else
            {
                return FL.ToString();
            }
        }
        else
        {
            return null;
        }
    }

/// <summary>
    /// 文件转换成二进制,返回二进制数组Byte[]
    /// </summary>
    /// <param name="FileFullPath">文件全路径</param>
    /// <returns>byte[] 包含文件流的二进制数组</returns>
    public byte[] FileToStreamByte(string FileFullPath)
    {
        if (File.Exists(FileFullPath) == true)
        {
            FileStream FS = new FileStream(FileFullPath, FileMode.Open); //创建一个文件流
            byte[] fileData = new byte[FS.Length];                       //创建一个字节数组,用于保存流
            FS.Read(fileData, 0, fileData.Length);                       //从流中读取字节块,保存到缓存中
            FS.Close();                                                  //关闭流(一定得关闭,否则流一直存在)
            return fileData;                                             //返回字节数组
        }
        else
        {
            return null;
        }
    }

/// <summary>
    /// 二进制数组Byte[]生成文件
    /// </summary>
    /// <param name="FileFullPath">要生成的文件全路径</param>
    /// <param name="StreamByte">要生成文件的二进制 Byte 数组</param>
    /// <returns>bool 是否生成成功</returns>
    public bool ByteStreamToFile(string FileFullPath, byte[] StreamByte)
    {
        try
        {
            if (File.Exists(FileFullPath) == true)  //判断要创建的文件是否存在,若存在则先删除
            {
                File.Delete(FileFullPath);
            }
            FileStream FS = new FileStream(FileFullPath, FileMode.OpenOrCreate);  //创建文件流(打开或创建的方式)
            FS.Write(StreamByte, 0, StreamByte.Length);  //把文件流写到文件中
            FS.Close();
            return true;
        }
        catch
        {
            return false;
        }
    }

/// <summary>
    /// 将Xml文件序列化(可起到加密和压缩XML文件的目的)
    /// </summary>
    /// <param name="FileFullPath">要序列化的XML文件全路径</param>
    /// <returns>bool 是否序列化成功</returns>
    public bool SerializeXml(string FileFullPath)   //序列化:
    {
        try
        {
            System.Data.DataSet DS = new System.Data.DataSet();  //创建数据集,用来临时存储XML文件
            DS.ReadXml(FileFullPath);  //将XML文件读入到数据集中
            FileStream FS = new FileStream(FileFullPath + ".tmp", FileMode.OpenOrCreate);  //创建一个.tmp的临时文件
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter FT = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();  //使用二进制格式化程序进行序列化
            FT.Serialize(FS, DS);  //把数据集序列化后存入文件中
            FS.Close();  //一定要关闭文件流,否则文件改名会报错(文件正在使用错误)
            DeleteFile(FileFullPath);  //删除原XML文件
            File.Move(FileFullPath + ".tmp", FileFullPath);  //改名(把临时文件名改成原来的xml文件名)
            return true;
        }
        catch
        {
            return false;
        }
    }

/// <summary>
    /// 反序列化XML文件
    /// </summary>
    /// <param name="FileFullPath">要反序列化XML文件的全路径</param>
    /// <returns>bool 是否反序列化XML文件</returns>
    public bool DeSerializeXml(string FileFullPath)
    {
        FileStream FS = new FileStream(FileFullPath, FileMode.Open);  //打开XML文件流
        System.Runtime.Serialization.Formatters.Binary.BinaryFormatter FT = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();  //使用二进制格式化程序进行序列化
        ((System.Data.DataSet)FT.Deserialize(FS)).WriteXml(FileFullPath + ".tmp");  //把文件反序列化后存入.tmp临时文件中
        FS.Close();  //关闭并释放流
        DeleteFile(FileFullPath);  //删除原文件
        File.Move(FileFullPath + ".tmp", FileFullPath);  //改名(把临时文件改成原来的xml文件)
        return true;
    }

}

/// <summary>
/// 与文件夹有关的操作类
/// </summary>
public class DirOperate
{
    public enum OperateOption
    {
        /// <summary>
        /// 当被创建的文件夹存在时,先删除该文件夹
        /// </summary>
        ExistDelete,

/// <summary>
        /// 当文件夹存在时,直接返回,不进行其它操作
        /// </summary>
        ExistReturn
    }

/// <summary>
    /// 创建文件夹
    /// </summary>
    /// <param name="DirFullPath">要创建的文件夹全路径</param>
    /// <param name="Option">创建文件夹时的操作选项</param>
    /// <returns>bool 是否创建成功</returns>
    public bool CreateDir(string DirFullPath, OperateOption Option)
    {
        try
        {
            if (Directory.Exists(DirFullPath) == false)  //判断文件夹是否存在
            {
                Directory.CreateDirectory(DirFullPath);
            }
            else if (Option == OperateOption.ExistDelete)  //如果存在且选项为“存在删除”
            {
                Directory.Delete(DirFullPath);  //删除目录,并删除此目录下的所以子目录
                Directory.CreateDirectory(DirFullPath);  //创建目录
            }
            return true;
        }
        catch
        {
            return false;
        }
    }

public bool DeleteDir(string DirFullPath)
    {
        if (Directory.Exists(DirFullPath) == true)
        {
            Directory.Delete(DirFullPath, true);
            return true;
        }
        else
        {
            return false;
        }       
    }

/// <summary>
    /// 得到当前文件夹中所有文件列表
    /// </summary>
    /// <param name="DirFullPath">文件夹全路径</param>
    /// <returns>string[] 文件列表</returns>
    public string[] GetDirFiles(string DirFullPath)
    {
        if (Directory.Exists(DirFullPath) == true)
        {
            string[] s = Directory.GetFiles(DirFullPath, "*.*", SearchOption.TopDirectoryOnly);  //获取当前目录下的所有文件
            return s;
        }
        else
        {
            return null;
        }
    }

/// <summary>
    /// 得到当前文件夹及下级文件夹中所有文件列表
    /// </summary>
    /// <param name="DirFullPath">文件夹全路径</param>
    /// <param name="SO">搜索选项</param>
    /// <returns>string[] 文件列表</returns>
    public string[] GetDirFiles(string DirFullPath, SearchOption SO)
    {
        if (Directory.Exists(DirFullPath) == true)
        {
            string[] s = Directory.GetFiles(DirFullPath, "*.*", SearchOption.AllDirectories);  //获取当前目录下的所有文件(包含子文件夹中的文件)
            return s;
        }
        else
        {
            return null;
        }
    }

/// <summary>
    /// 得到当前文件夹中指定文件类型[扩展名]文件列表
    /// </summary>
    /// <param name="DirFullPath">文件夹的全路径</param>
    /// <param name="SearchPattern">查找哪种类型的文件</param>
    /// <returns>string[] 文件列表</returns>
    public string[] GetDirFiles(string DirFullPath, string SearchPattern)
    {
        if (Directory.Exists(DirFullPath) == true)
        {
            string[] s = Directory.GetFiles(DirFullPath, SearchPattern);  //获取当前目录下指定文件类型的文件列表
            return s;
        }
        else
        {
            return null;
        }
    }

/// <summary>
    /// 得到当前文件夹及下级文件夹中指定文件类型[扩展名]文件列表
    /// </summary>
    /// <param name="DirFullPath">目录全路径</param>
    /// <param name="SearchPattern">查找哪种类型的文件</param>
    /// <param name="SO">搜索选项</param>
    /// <returns>string[] 文件列表</returns>
    public string[] GetDirFiles(string DirFullPath, string SearchPattern, SearchOption SO)
    {
        if (Directory.Exists(DirFullPath) == true)
        {
            string[] s = Directory.GetFiles(DirFullPath, SearchPattern, SO);  //获取当前目录下的文件
            return s;
        }
        else
        {
            return null;
        }
    }
}

转载于:https://www.cnblogs.com/nclly/archive/2008/11/26/1341069.html

C#中文件与文件夹相关的操作相关推荐

  1. xshell中mysql命令大全_Xshell 相关命令操作

    1.选择文件夹 # cd 2.列表显示竖排模式 #  ll 3.列表显示横排模式 # ls 4.进入数据库 #  mysql -uroot - 密码 !my进入数据库  因为上面已经输了mysql的那 ...

  2. 处理文件和文件夹的模块---os

    os 前言 获取当前运行的python代码文件路径 列出指定路径下的文件夹包含的文件和子文件名称 分离文件主名和扩展名 重命名文件和文件夹 前言 os模块是Python和操作系统进行交互的一个接口,它 ...

  3. 转:Eclipse中打开文件所在文件夹的插件及设置

    如果你经常需要在Eclipse里打开相关资源文件所在的文件夹,比较麻烦,要右键,属性,在Location一栏中把所在的文件夹拷贝一下,然后再去资源管理器里输入这个路径,回车,打开它. 解决方法: 用E ...

  4. python中对文件、文件夹(文件操作函数)的操作

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

  5. win10计算机里文件夹怎么删除文件,如何删除win10“此电脑”中6个文件夹?

    更新完win10系统,我们会发现打开"此电脑",相比win7相比,除了还有传统的硬盘分区外,还多了6个文件夹:视频.图片.文档.下载.音乐和桌面.讲真,这些文件夹似乎也用不上,对于 ...

  6. 如何用C语言清空特定文件夹中的所有文件

    最近笔者在做一个有关计算机视觉的项目,需要对提前的视频帧进行实验,当数据量很大且文件夹中的子文件夹和文件很多时,手工删除这些文件不现实,笔者今天写了一个程序,通过机器自动删除所有相关文件,十分快速,删 ...

  7. 你必须具有权限才能读取此对象_win10中随心所欲设置文件/文件夹访问权限,可以轻松做到,并不难...

    要访问Windows 10上的任何文件或文件夹,你必须具有相应的权限.遗憾的是,如果你没有编辑某些文件和文件夹的权限,则可能会出现某些问题,这时你必须对该文件夹或文件取得所有权. 要想取得某个文件夹的 ...

  8. Winform中选取指定文件夹并获取其下所有文件

    场景 Winform中选取指定文件夹,并获取该文件夹下所有文件名,不包含子文件夹.考虑子文件夹可以使用递归实现. 注: 博客: BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_CSDN博客 ...

  9. wince中的BSP工程的相关文件介绍

    一.pbcxml分析         每一个BSP都有一个工程文件,比如MyBSP.pbcxml,里面描述了BSP的信息.下面就来介绍一下BSP的pbcxml文件. 文件的大致格式应该是这样的: &l ...

最新文章

  1. excel批量更改超链接_Excel如何批量建立超链接,搭建工作台
  2. 四十一、Linux基础命令,用户管理和文件系统总结
  3. phppython混合开发_如何让python嵌入html实现类似php的快速开发,十分有价值
  4. linux vi代码高亮,linux Vi编辑器代码高亮设置及永久显示行号的方法
  5. 通过css和html构建能耗数据分析树状图
  6. 如何横扫棋坛?AlphaGo 先随机扔了一个骰子
  7. ps怎么将图片制作成ico图标? ps制作ico图标的教程
  8. ubuntu 打印git邮箱_win 10配置Ubuntu子系统—可以考虑放弃VMware了
  9. css 语音,CSS3新特性一览-- 语音
  10. 拉格朗日乘子法(自己总结一些要点)
  11. 音频怎么转文字?学会这3招,轻松拉满你的工作效率
  12. 数据分析:杜邦分析法
  13. 计算机应用基础(专)【10】
  14. vm-tools 安装
  15. mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor...
  16. Shell学习(12)文件操作
  17. GD32E230 ADC注入通道
  18. 筒仓计算表格_打破筒仓
  19. soj 4393模拟
  20. 盘点2018年这些黑科技的发展趋势

热门文章

  1. 【CCCC】PAT : 团体程序设计天梯赛-练习集 L3 答案(01-23)
  2. 【NOIP初赛】【Luogu1787】普及组2013(洛谷初赛题提交水AC方法了解一下)
  3. UVa10340 - All in All
  4. dongle 工具 蓝牙_CC2540 USB Dongle 蓝牙抓包分析仪使用教程
  5. 3d 模型换人脸_3D人脸模型月销量上千单 谁在打印,谁在帮打?
  6. pkill mysql_centos下kill、killall、pkill命令区别
  7. jquery包裹节点
  8. linux7.3的域名配置表,Centos7.3 安装部署Nginx并配置https的方法步骤
  9. nextpolish安装_希望组自主三代组装软件NextDenovo最新版本全球学术开源!
  10. 回溯法——设计一个算法在1、2、3... 9(顺序不能变)数字之间插入+ 或 - 或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性和全排列