zoukankan      html  css  js  c++  java
  • .net(C#)操作文件的几种方法汇总

    .net(C#)操作文件的几种方法汇总

    System.IO命名空间下类的用法:
    在System.IO名称空间中包含了用于文件输入输出的主要类。
    File:实用类,提供许多静态方法,用于移动、复制和删除文件。
    Directory:实用类,提供许多静态方法,用于移动、复制和删除目录。
    Path:实用类,用于处理路径名称。
    FileInfo:表示磁盘上的物理文件,具有可以处理此文件的方法。要完成对文件的读取和写入工作,就必须创建Stream对象。
    DirectoryInfo:表示磁盘上的物理目录,具有可以处理此目录的方法。
    FileStream:表示可以被写或被读,或二者均可的文件。此文件可以同步或异步的读和写。
    StreamReader:从流中读取字符数据,并可以通过使用FileStream被创建为基类。
    StreamWriter:向流写字符数据,可以通过使用FileStream被创建为基类。
    FileSystemWatcher:用于监控文件和目录,并在这些位置发生变化时,给出应用程序可以捕获的事件。

    示例代码片段:
    1.读取文件:StreamReader和StreamWrite操作的的字符串
    FileStream的用法
    System.IO.FileStream fs = new FileStream("Test.txt", FileMode.OpenOrCreate,FileAccess.Read);
    char[] cs = new char[fs.Length];
    byte[] bs = new byte[fs.Length];
    fs.Read(bs,0,(int)fs.Length);
    Encoding e = System.Text.Encoding.UTF8;
    cs=e.GetChars(bs);

    foreach (char c in cs)
    {
    Console.WriteLine(c);
    }
    StreamReader的用法:
    string str;
    using (StreamReader sr = new StreamReader("Test.txt"))
    {
    while ((str = sr.ReadLine()) != null)
    {
    Console.WriteLine(str);
    }
    }
    2.写入文件:
    FileStream的用法:FileStream操作的是字节数组。而字节数据又要通过Encoding类把字节数组和字符数组进行转换。
    System.IO.FileStream fs = new FileStream("Test.txt", FileMode.Truncate);
    string str = "Hello,this is my cc";
    byte[] array = new byte[str.Length];
    System.Text.Encoding e = System.Text.UTF8Encoding.UTF8;
    array=e.GetBytes(str);
    fs.Write(array, 0, array.Length);
    StreamWrite的用法:
    using (StreamWriter sw = new StreamWriter("Test.txt",true,Encoding.GetEncoding("gb2312")))
    {
    sw.WriteLine("你好不好,我想你");
    }


    File类一些常用的静态方法:

    方法说明:
    Copy()
    将文件复制到规定的位置
    Create()
    在规定的路径上创建文件
    Delete()
    删除文件
    Open()
    在规定的路径上返回FileStream对象
    Move()
    将规定的文件移动到新位置。可以在新位置为文件规定不同的名称

    Directory类一些常用的静态方法:

    方法说明
    CreateDirectory()
    创建具有规定路径的目录
    Delete()
    删除规定的目录以及其中的所有文件
    GetDirectories()
    返回表示当前目录之下的目录的Directory对象的数组
    GetFiles()
    返回在当前目录中的File对象的数组
    Move()
    将规定的目录移动到新位置。可以在新位置为文件夹规定一个新名称

    FileInfo类:

    它没有静态方法,仅可用于实例化的对象。FileInfo对象表示在磁盘或网络位置的文件。注意它不是流。为了实现对文件的读取或写入,必须创建Stream对象。

    如果仅在对象上进行单一方法调用,则可以使用静态File类。在此,静态调用要快一些,因为.Net Framework不必遍历实例化新对象并调用方法的过程。但是如果应用程序在文件上执行几种操作,在实例化FileInfo对象并使用其方法就更好一些。这会节省时间,因为对象将在文件系统上引用正确的文件,而静态类就必须每次都寻找文件。

    FileInfo类提供的基础性的属性,可用来更新文件。

    属性
    说明

    Attributes
    获取或者设置当前文件的属性
    CreationTime
    获取当前文件的创建日期和时间
    DirectoryName
    返回文件目录的路径
    Exists
    判断是否存在文件
    FullName
    检索文件的完整路径
    Length
    获取文件的容量
    Name
    仅仅返回文件的名称,而不是完整的文件位置路径

    DirectoryInfo类:

    DirectoryInfo类的作用类似于FileInfo类。它是一个实例化的对象,表示计算机上的单一目录。同FileInfo类—样,在Directory和DirectoryInfo之间可以复制许多方法调用。当使用这二者时,可以便用相同的原则:如果进行单一调用,就使用静态Directory类。如果进行一系列调用,则使用实例化的DirectoryInfo对象。

    DirectoryInfo类与FileInfo类共享几乎所有相同的属性,DirectoryInfo类作用在无文件的目录上除外。

    FileStream对象:

    表示在磁盘或网络路径上指向文件的流。当类提供向文件读取和写入字节的方法时,经常使用StreamReader和StreamWriter执行这些功能。这是因为FileStream类操作字节和字节数组,而Stream类操作字符数据。

    还有几种方法可以创建FileStream对象。构造函数具有许多不同的重载/版本,但是最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举。

    FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate);

    FileMode枚举的成员:

    FileMode枚举成员
    说明
    Append
    如果文件存在,就打开文件,将文件位置移动到文件的末尾,并创建个新文件。FileMode.Append仅可以与枚举FileAccess.Write联合使用
    Create
    创建新文件,如果存在这样的文件就破坏它
    CreateNew
    创建新文件,但是如果已经存在了此文件,则抛出异常
    Open
    打开现有的文件。如果不存在所规定的文件,则抛出异常
    OpenOrCreate
    如果文件存在,则规定打开文件,否则就创建新文件。如果文件已经存在,则保留在文件中的数据
    Truncate
    打开现有文件,清除其内容。然后我们可以向文件写入全新的数据,但是保留文件的初始创建日期。必须存在有文件,否则就会抛出异常

    前面的构造函数默认以只读模式打开文件。需要一个附加参数规定不同的访问级别,此参数即FileAccess参数。

    FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate,FileAccess.Write);

    此行代码将打开文件,对文件进行写访问。对文件的任何读的企图都会导致抛出异常。仅有3种类型的FileAccess枚举:Read,ReadWirte和Write。可以打开一个文件,只读、只写或进行读写操作。此属性的作用是:基于用户的身份验证级别改变用户对文件的访问。

    付出最大努力,追求最高成就。

     
  • 相关阅读:
    mysql 中只能使用 localhost 登录,用ip不能登陆
    在springboot 和 mybatis 项目中想要显示sql 语句进行调试
    从一张表数据导入到另一张表
    mysql 中 delete 子查询的限制
    配置eureka 老是报错connected time out 或者 refused connected
    Linux-TCP 出现 RST 的几种情况
    MySQL-优化之 index merge(索引合并)
    Python-Mac 安装 PyQt4
    PHP-PHP-FPM的max_children一些误区
    Linux-磁盘及网络IO工作方式解析
  • 原文地址:https://www.cnblogs.com/luwei-s/p/4132847.html
Copyright © 2011-2022 走看看