六、IO操作系列

一、Path

二、Directory、DirectoryInfo目录文件操作

//创建目录:Directory.CreateDirectory()
string path = @"d:\testfiles\testO2\test002";
if(!Directory.Exists(path)){
    Directory.CreateDirectory(path);
}


//删除目录:Directory.Delete(path,bool b);
//删除指定的目最,并删除该目录中的所有子目录和文件(如果表示)。b:若要删除path 中的目录、子目录和文件,则为true;否则为 false,
//如果有子目录就不能删除,加上true参数就可以删除指定目录及子目录
    Directory.Delete(path)
    Directory.Delete(path,true)

//文件移动:Directory.Move();
//把d:\|testfiles\test\test001文件下的test001移动到test2中
    Directory.Move(@"d:\|testfiles\test\test001",@"d:\testfiles\test2\test001");


//Directory.GetDirectories()获取指定目录下的所有子目录
//Directory.GetFiles()获取指定目录下的所有文件
    string path2 = @"d:\testfiles\test2";
    string[] dics= Directory.GetDirectories(path2);//获取子目录列表
    string path3= @"d:\testfiles\test2\test001";
    string[] files= Directory.GetFiles(path3);//目录下的文件列表

//DirectoryInfo用法
    Directorylnfo direc = new Directorylnfo(path);
        //创建目录
        direc.Create();

        direc.MoveTo("目标路径");

        //只目录下没有子目录或者文件时才能删除,如果有文件,参数就需要改为true
        direc.Delete(false);

        //获取子目录
        direc.GetDirectory();

        //获取子文件
        direc.GetFiles();

三、File、FileInfo

  • File.CreateText() : 返回值是StreamWriter
  • File.Create() : 返回值是FileStream

    string path = @"D:\\C盘移动的\\Desktop\\text001";
    //文件存在就追加写入内容,不存在就创建文件,再调用写入流才能写入内容
    StreamWriter sw = File.AppendText(path);
    sw.WriteLine("你好!");
    sw.Flush();
    sw.Close();

    string path2 = @"D:\\C盘移动的\\Desktop\\text002";
    //文件存在就追加写入内容,不存在就创建文件,不需要再调用写入流,就可以直接写入内容
    File.AppendAllText(path2, "sjsjjsssssa");

    string path3 = @"D:\\C盘移动的\\Desktop\\text003";
    List<string> list = new List<string> {
        "你第一好啊",
        "你第二好啊",
        "你第三好啊",
    };
    //文件存在就追加写入内容,不存在就创建文件,不需要再调用写入流,就可以直接写入内容
    //按照list集合数据写入文本中,一个数据占一行
    File.AppendAllLines(path3, list, Encoding.UTF8);
    File.AppendAllLines(path3, list);





打开文件
    FileStream fs= File.OpenRead(path);//只读文件流
    FileStream fs = File.OpenWrite(path);//写入文件流
    //StreamReader sr = File.OpenText(path);//打开文本文件
    //string v = sr.ReadToEnd();
    //Console.WriteLine(v);
    //File.Open(path, FileMode.Open);//现有文件,若不存在,则出现异常
    //File.Open(path, FileMode.Create);//创建新文件,若存在,则覆盖
    //File.Open(path, FileMode.CreateNew);//创建新文件,若存在,则异常
    //File.Open(path, FileMode.Append, FileAccess.Write);//若不存在创建新文件,若存在,则查找到文件末尾,配合FileAccess.Write使用
    //File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);//若不存在则创建,若存在则打开



//读取
    string path4 = @"D:\\C盘移动的\\Desktop\\text003";
    Console.WriteLine("===========方法①==============");
    string[] strings = File.ReadAllLines(path4);
    foreach (string s in strings)
    {
        Console.WriteLine(s);
    }
    Console.WriteLine("===========方法②==============");
    string v = File.ReadAllText(path4);
    Console.WriteLine(v);
    Console.WriteLine("===========方法③==============");
    IEnumerable<string> list = File.ReadLines(path4);
    foreach (string s in list)
    {
        Console.WriteLine(s);
    }
    Console.WriteLine("===========方法④==============");
    byte[] bytes = File.ReadAllBytes(path4);

//System.Text.Encoding.UTF8.GetString(bytes);把byte数组转换成编码为UTF8的字符串
    string v1 = System.Text.Encoding.UTF8.GetString(bytes);

    Console.WriteLine(v1);
    Console.WriteLine("===========FileInfo读取文件内容==============");
    FileInfo fi = new FileInfo(path4);
    Console.WriteLine("===========FileInfo方法①==============");
    StreamReader streamReader = fi.OpenText();
    string v2 = streamReader.ReadToEnd();
    Console.WriteLine(v2);



写入
    string path5 = @"D:\\C盘移动的\\Desktop\\text004";
    //创建一个新文件,向其中写入指定的字符串,然后关闭文件。
    //如果目标文件已存在,则覆盖该文件。
    File.WriteAllText(path5, "sdhdhdhkjshjgsg你好好爱好好哈哈");
    //创建一个新文件,向其中写入指定的字符串数组,然后关闭文件。
    //如果目标文件已存在,则覆盖该文件。
    File.WriteAllLines(path5, new string[] { "哈哈哈哈哈", "呵呵呵呵呵", "嘿嘿嘿嘿嘿" });
    //创建一个新文件,向其中写入指定的字节流数组,然后关闭文件。
    //如果目标文件已存在,则覆盖该文件。
    Byte[] b = new Byte[] { 0, 1, 0, 1, 0, 10, 11, 0, 2, 0, 20, 2, 0 };
    File.WriteAllBytes(path5, b);

四、BufferedStream:

  • 文件缓冲区:缓冲区是内存中的一块连续区域, 用于暂时存放读写期间文件数据在内存区预留的一定空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值