C# IO 常见API

C# IO读取

  1. File 类 - 提供用于创建,复制,删除,移动 和 打开单一文件的静态方法
  2. Path 类 - 对包含文件或目录路径信息的 String 实例执行操作
  3. Directory 类 - 公开用于通过目录和子目录进行创建,移动 和 枚举 的静态方法
  4. Steam - 提供字节序列的一般视图。

File

File.Exists(string path):判断路径是否存在

File.Create(string path) :创建文件或覆盖文件,返回 FileSteam

File.CreateText(string path):创建文件或覆盖文件,返回SteamWriter

File.Delete(string path):删除文件

File.Copy(string sourceFileName, string destFileName): 复制文件到新的位置

File.Move(string sourceFileName, string destFileName):移动文件到新的位置

File.AppendText(string path):没有文件创建文件,返回 SteamWrite

File.AppendTextAll(string path, string contents):没有文件创建文件,追加文本。

File.AppendTextAllLines(string path, IEnumerable<string> contents):没有文件创建文件,追加多行

File.OpenText (string path):没有文件创建文件,返回 SteamReader

File.ReadAllText(string path):读入全部

File.ReadAllLines(string path):分开读入多行字符串

File.OpenWrite(string path):没有文件创建文件,返回 SteamWrite

File.WriteAllText(string path, string contents):没有文件创建文件,写入文本

File.WriteAllLines(string path, IEnumerable<string> contents):没有文件创建文件,写入多行

FileMode 文件打开方式(枚举)

  • Create - 创建新文件,如果此文件已存在,则会将其覆盖。
  • Create New - 创建新文件。如果此文件已存在,则会触发异常。
  • Append - 存在文件,则打开该文件并查找到文件尾,或者创建一个新文件。
  • Open - 打开现有文件。文件不存在,引发异常。
  • Open Or Create - 打开文件(如果文件存在);否则,应创建新文件。

FileAccess 文件访问权限(枚举)

  • Read - 对文件的读访问。 可从文件中读取数据。 与 Write 组合以进行读写访问。
  • Write - 对文件的读写访问权限。 可从文件读取数据和将数据写入文件。
  • Read Write - 文件的写访问。 可将数据写入文件。 与 Read 组合以进行读写访问。

Path

Path.Combine:连接两个路径,以\符号隔开

Path.GetDirectory(string path):获得目录路径

Path.GetFile(string path):获得文件名

Path.GetExtension(string path):获得后缀名

Path.ChangeExtension(string path, string extension):改变后缀名

Path.GetFullPath(string path):获得文件的绝对路径

Path.GetFileWithoutExtension(string path):获得不具有扩展名的指定路径字符串的文件名。

Directory

Directory.CreateDirectory(string path): 创建目录及其子目录

Directory.Exists(string path):判断路径是否存在

Directory.Delete(string path):删除目录及其子目录

Directory.Move (string sourceDirName, string destDirName):将文件或目录及其内容移动到新位置

Directory.GetDirectorys(string path):返回与在指定目录中的指定搜索模式匹配的子目录的名称(包括其路径),还可以选择地搜索子目录。

Directory.GetFiles(string path):返回指定目录中文件的名称(包括其路径)。

    //查找子目录与文件路径
    private static void GetChildDirectoriesAndFiles(string path, List<string> dictList)
    {
        var dict = new DirectoryInfo(path);
        var files = dict.GetFiles();
        dictList.AddRange(files.Select(f => f.FullName));

        foreach (var directory in dict.GetDirectories())
        {
            dictList.Add(directory.FullName);
            GetChildDirectoriesAndFiles(directory.FullName, dictList);
        }
    }

Steam - 一个抽象类,所有流的抽象基类

SteamReaderStreamWrite 类帮助我们实现在流上读写字符串功能

提供以下三种常见子类 Steam

  • MemorySteam - 存储在内存中的字节流
  • FileSteam - 存储在文件系统的字节流
  • BufferedSteam - 为其他流提供缓冲的流

TextReader - 为抽象类,派生为 SteamReaderStringReader 两个类

  • ReadLine():读一行,返回string

  • ReadToEnd():读全部,返回string

  • Close() 和 Dispose(): 回收资源,由于这些是非托管资源,需要手动回收,可以使用 using 关键字来保证回收

TextWriter - 为抽象类,派生为 SteamWriterStringWrite 两个类

  • Write(string s):写入字符串(数字等)

  • WriteLine(string s):写入一行字符串,后面会补一个回车

  • Close() 和 Dispose(): 回收资源,由于这些是非托管资源,需要手动回收,可以使用 using 关键字来保证回收

例如

public static class Program
{
    public static void Main()
    {
        var path = @"D:\";
        path = Path.Combine(path, "Text");
        if (!Directory.Exists(path)) Directory.CreateDirectory(path);
        
        path = Path.Combine(path, "text.txt");
        if (!File.Exists(path)) File.Create(path);
		
        //写入操作
        using (TextWriter writer = new StreamWriter(path))
        {
            writer.WriteLine("wu xin");
            writer.WriteLine("No1");
        }
		
        //读入操作
        using (TextReader reader = new StreamReader(path))
        {
            string? s = reader.ReadLine();
            while (s != null)
            {
                Console.WriteLine(s);
                s = reader.ReadLine();
            }
            
            // Console.WriteLine(reader.ReadToEnd());
        }
    }
}

还有一些之后补充

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值