zoukankan      html  css  js  c++  java
  • C#(99):文件读写(一)利用File静态类 System.IO.FileInfo、DirectoryInfo、DriveInfo

    提供用于创建、复制、删除、移动和打开单一文件的静态方法,并协助创建 FileStream 对象。

    一、读文件:

    1、返回字符串:File.ReadAllText()

    string readText = File.ReadAllText(@"c:	empMyTest.txt");

    2、返回字符串数组:File.ReadAllLines()

    string[] readText = File.ReadAllLines(@"c:	empMyTest.txt", Encoding.UTF8);

    3、返回字节数组:File.ReadAllBytes()

    byte[] buffer = File.ReadAllBytes(@"c:	empMyTest.txt");
    string str = Encoding.Default.GetString(buffer, 0, buffer.Length);

    4、返回StreamReader:File.OpenText()

    打开现有的UTF-8文本以进行读取

    using (StreamReader sr = File.OpenText(@"c:	empMyTest.txt"))
    {
        string s;
        while ((s = sr.ReadLine()) != null)
        {
            Console.WriteLine(s);
        }
    }

    二、写文件

    创建一个新文件向其中写入内容,文件已存在则覆盖。

    1、写入字符串:File.WriteAllText(),File.AppendAllText()

    string createText = "Hello and Welcome" + Environment.NewLine;
    File.WriteAllText(path, createText);

    2、返回字符串数组:File.WriteAllLines()

    string[] createText = { "Hello", "And", "Welcome" };
    File.WriteAllLines(path, createText);

    3、返回字节数组:File.WriteAllBytes()

    string str = "哈哈哈哈哈哈";
    byte[] buffer = Encoding.Default.GetBytes(str);
    File.WriteAllBytes(path,buffer);

    4、返回StreamWriter:File.CreateText()、File.AppendText()

    创建或打开现有的UTF-8文本,以进行写入或追加

    using (StreamWriter sw = File.CreateText(path))
    {
        sw.WriteLine("Hello");
        sw.WriteLine("And");
        sw.WriteLine("Welcome");
    }

    三、返回FileStream的操作

    File.Open():默认为不共享、具有读/写访问权限

    using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None))
    {
        byte[] b = new byte[1024];
        UTF8Encoding temp = new UTF8Encoding(true);
    
        while (fs.Read(b, 0, b.Length) > 0)
        {
            Console.WriteLine(temp.GetString(b));
        }
    }

    File.OpenRead():读访问权限

    File.OpenWrite:写访问权限

    using (FileStream fs = File.OpenWrite(path))
    {
        Byte[] info = new UTF8Encoding(true).GetBytes("This is to test the OpenWrite method.");
    
        // Add some information to the file.
        fs.Write(info, 0, info.Length);
    }

    File.Create():

    using (FileStream fs = File.Create(path))
    {
        Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
        // Add some information to the file.
        fs.Write(info, 0, info.Length);
    }

    四、File类的常用操作:

    • 文件删除方法:File.Delete()
    • 文件复制方法:File.Copy()
    • 文件移动方法:File.Move()
    • 设置文件属性方法:File.Set/Get***()
    • 判断文件是否存在的方法:File.Exist()

    五、Directory类的常用操作:

    • CreateDirectory(String)    在指定路径中创建所有目录和子目录,除非它们已经存在。
    • Delete(String)    从指定路径删除空目录。
    • Delete(String, Boolean)    删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。
    • EnumerateDirectories(String)    返回指定路径中的目录名的可枚举集合。
    • EnumerateFiles(String)    返回指定路径中的文件名的可枚举集合。
    • EnumerateFileSystemEntries(String)    返回指定路径中的文件名和目录名的可枚举集合。
    • Exists(String)    确定给定路径是否引用磁盘上的现有目录。
    • GetCurrentDirectory()    获取应用程序的当前工作目录。
    • GetDirectories(String)    返回指定目录中的子目录的名称(包括其路径)。
    • GetDirectoryRoot(String)    返回指定路径的卷信息、根信息或两者同时返回。
    • GetFiles(String)    返回指定目录中文件的名称(包括其路径)。
    • GetFileSystemEntries(String)    返回指定路径中的所有文件和子目录的名称。
    • GetLogicalDrives()    检索此计算机上格式为“<drive letter>:”的逻辑驱动器的名称。
    • GetParent(String)    检索指定路径的父目录,包括绝对路径和相对路径。
    • Move(String, String)    将文件或目录及其内容移到新位置。
    //删除此目录
    Directory.Delete(@"C:新建文件夹")
    
    //删除此目录,true表示要是此目录有子目录也删除,否则就抛出异常
    Directory.Delete(@"C:新建文件夹", false);
    
    //此目录是否存在
    bool b = Directory.Exists(@"C:新建文件夹");
    
    //根据路径返回此目录下的子目录
    string[] dirs1 = Directory.GetDirectories(@"C:新建文件夹");
    
    //第二个参数表示:搜索的范围,就是搜索的文件夹包含“基础”关键字
    string[] dirs2 = Directory.GetDirectories(@"C:新建文件夹", "*.mp3");
    
    //搜索目录下的所有文件
    string[] files = Directory.GetFiles(@"C:新建文件夹");
    
    //第三个参数表示:指定搜索操作应包括所有子目录还是仅包括当前目录。
    string[] files1 = Directory.GetFiles(@"C:新建文件夹", "2.txt", SearchOption.AllDirectories);
    
    //(获取指定目录下的所有目录时返回一个DirectoryInfo数组。)
    DirectoryInfo dirs = Directory.GetParent(@"C:新建文件夹");
    
    //移动、剪切。只能在同一个磁盘中。目录没有Copy方法。可以使用Move()方法实现重命名。
    Directory.Move(@"F:测试33", @"F:测试3233");

    六、FileSystemInfo

    派生类:

    • DirectoryInfo
    • FileInfo

    FileInfo类

    FileInfo类常用字段:

    • Name 提取文件名
    • Directory 所属目录
    • Exists 是否存在(继承自父类FileSystemInfo)
    • Extension 文件扩展名
    • Length 文件长度
    • IsReadOnly 是否为只读

    FileInfo类常用方法:

    • Open() 打开文件
    • Create() 创建文件
    • CopyTo() 复制到新文件
    • Delete() 删除文件
    • MoveTo() 移动文件
    • Replace() 替换文件
    • EnCrypt() 加密文件
    • Decrypt() 解密文件

    //实例化FileInfo进行操作
    FileInfo myfile = new FileInfo(path); //声明一个对象对某一个文件进行操作
    myfile.CopyTo(destpath);  //对文件进行复制操作,复制路径为destpath
    myfile.MoveTo(destpath);  //进行移动操作
    myfile.Delete();          //进行删除操作
    
    //获得某一文件或文件夹的详细信息(创建日期,最后一次修改日期等等)
    FileInfo myfile = new FileInfo(path); //声明一个对象对某一个文件进行操作
    DateTime dt = myfile.CreationTime;  //获取或设置文件/文件夹的创建日期
    string filepath = myfile.DirectoryName; //仅能用于FileInfo,获得完整的路径名,路径+文件名
    bool file = myfile.Exists;              //此属性的值表示文件或文件夹是否存在,存在会返回True
    string fullname = myfile.FullName;     //获取文件或文件夹的完整路径名
    DateTime lastTime = myfile.LastAccessTime; //获取或设置最后一次访问文件或文件夹的时间
    DateTime lastWrite = myfile.LastWriteTime; //获取或设置最后一次修改文件夹或文件夹的时间
    string name = myfile.Name;                 //获取文件名,不能修改哦
    long length = myfile.Length;                  //返回文件的字节大小
    //CreationTime,LastAccessTime,LastWriteTime都是可以被修改的。

    DirectoryInfo类

    属性

    • Attributes    获取或设置当前文件或目录的特性。 (Inherited from FileSystemInfo)
    • CreationTime    获取或设置当前文件或目录的创建时间。 (Inherited from FileSystemInfo)
    • Exists    获取指示目录是否存在的值。
    • Extension    获取表示文件扩展名部分的字符串。 (Inherited from FileSystemInfo)
    • LastAccessTime    获取或设置上次访问当前文件或目录的时间。 (Inherited from FileSystemInfo)
    • LastWriteTime    获取或设置上次写入当前文件或目录的时间。 (Inherited from FileSystemInfo)
    • Name    获取此 DirectoryInfo 实例的名称。
    • Parent    获取指定子目录的父目录。
    • Root    获取目录的根部分。

    方法

    • Create()    创建目录。
    • CreateSubdirectory(String)    在指定路径上创建一个或多个子目录。 指定路径可以是相对于 DirectoryInfo 类的此实例的路径。
    • Delete()    如果此 DirectoryInfo 为空,则删除它。
    • EnumerateDirectories()    返回当前目录中的目录信息的可枚举集合。
    • EnumerateFiles()    返回当前目录中的文件信息的可枚举集合。
    • GetDirectories()    返回当前目录的子目录。
    • GetFiles() 返回当前目录的文件列表。
    • GetFileSystemInfos()    返回表示某个目录中所有文件和子目录的强类型 FileSystemInfo 项的数组。
    • MoveTo(String)    将 DirectoryInfo 实例及其内容移动到新路径。
    DirectoryInfo dir = new DirectoryInfo(@"d:C#程序设计");
    if (!dir.Exists)
    {
        dir.Create();
    }
    else
    {
        Console.WriteLine("该目录已经存在");
    }

    七、DriveInfo类

    在Windows操作系统中,存储介质统称为驱动器,硬盘由于可以划分为多个区域,每一个区域称为一个驱动器。

    DriveInfo类的常用字段成员有DriveFormat(文件系统格式,如NTFS或FAT32)、DriveType(驱动器类型)、Name(驱动器名)、TotalSize(总空间)、TotalFreeSpace(获得驱动器可用空间)。常用的方法成员有GetDrives(获得可用驱动器列表)。

    DriveType枚举型的枚举值有CDRom(光驱)、Fixed(硬盘)、Network(网络驱动器)和Removeable(软盘或U盘)等。

    例如,以下代码可以输出每一个硬盘驱动器的剩余空间信息。

    DriveInfo[] drivers = DriveInfo.GetDrives();
    foreach (DriveInfo driver in drivers)
    {
        if (driver.DriveType == DriveType.Fixed && driver.DriveFormat == "NTFS")
        {
            Console.WriteLine("在{0}驱动器上还有{1}字节的剩余空间。", driver.Name, driver.AvailableFreeSpace);
        }
    }
  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/springsnow/p/9428702.html
Copyright © 2011-2022 走看看