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。可以打开一个文件,只读、只写或进行读写操作。此属性的作用是:基于用户的身份验证级别改变用户对文件的访问。

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

     
  • 相关阅读:
    HDU 1525
    kmp模板
    hdu 4616 Game(树形DP)
    hdu 4619 Warm up 2(并查集活用)
    hdu 4614 Vases and Flowers(线段树加二分查找)
    Codeforces 400D Dima and Bacteria(并查集最短路)
    poj 2823 Sliding Window (单调队列)
    hdu 2196 Computer(树形dp)
    hdu 4604 Deque
    最短路径
  • 原文地址:https://www.cnblogs.com/luwei-s/p/4132847.html
Copyright © 2011-2022 走看看