Directoy文件夹操作对象 、StreamReader和StreamWriter 和BufferedStream

Directoy

Directory:提供一些处理文件夹的操作的属性和方法

DirectoryInfo:设置文件夹属性的类 例如隐藏文件夹,只读文件夹等属性

1.CreateDirectory()创建文件夹

创建在Debug文件下 Image/OK这样的目录

Directory.CreateDirectory(@"Image/OK");

GetCurrentDirectory() 获取当前目录 是一个绝对路径

Console.WriteLine(Directory.GetCurrentDirectory());

Delete() 删除文件夹

参数2位true,可以删除目录以及子目录;参数2位false的话,如果有子目录,不允许删除

Move()

把参数1位置文件或者文件夹 移动到参数2这个位置上

GetDirectories 获取当前目录子目录
GetFiles 获取文件的内容

:返回文件,不是文件夹的东西,文件夹里面的也不能返回

隐藏文件夹

DirectoryInfo info = new DirectoryInfo(@"./新建文件夹");

Attribute属性

FileAttributes.Hidden 文件的隐藏属性

info.Attributes = FileAttributes.Hidden;

实例

cs 复制代码
internal class Program
{
    static void Main(string[] args)
    {
        //Directory:提供一些处理文件夹的操作的属性和方法
        //DirectoryInfo;设置文件夹属性的类  例如隐藏文件夹,只读文件夹等属性

        //1创建文件夹 创建在Debug文件下 Image/OK这样的目录
        Directory.CreateDirectory(@"Image/OK");

        //2 Exists判断文件路径是否存在
        if (!Directory.Exists(@"Config"))//是否存在
        {
            Console.WriteLine("11111");
            Directory.CreateDirectory(@"Config");
        }

        //3 D:\vis项目\四周四\_课1\bin\Debug
        // GetCurrentDirectory() 获取当前目录 是一个绝对路径
        Console.WriteLine(Directory.GetCurrentDirectory());

        //4 Delete() 删除文件夹的时候 参数2 为true 可以删除目录以及子目录 参数2 为false 如果有子目录 不允许删除
        //Directory.Delete(@"Image",false);

        //5 Move()把参数1 位置文件中的内容 移动到参数2这个位置上 并且位置文件会消失
        if (!Directory.Exists(@"../Test1"))
        {
            Directory.Move(@"Image1", @"../Test1");

        }

        //6 GetDirectories()获取当前目录子目录D:\vis项目\四周四\_课1\bin
        //string[] paths = Directory.GetDirectories("../Debug");
        string[] paths = Directory.GetDirectories("D:\\vis项目\\四周四\\_课1\\bin\\Debug");//不加@ 要有两个斜杠\\
        foreach (var item in paths)
        {
            Console.WriteLine(item+"-----------");
        }

        //7 GetFiles 获取文件的
        string[] pash1 = Directory.GetFiles("D:\\vis项目\\四周四\\_课1\\bin\\Debug");//返回文件,不是文件夹的东西,文件夹里面的也不能返回
        foreach (var item in pash1)
        {
            Console.WriteLine(item +"++++++++++++");
        }

        //8 隐藏文件夹
        DirectoryInfo info = new DirectoryInfo(@"./新建文件夹");
        //Attribute属性
        //FileAttributes.Hidden 文件的隐藏属性
        info.Attributes = FileAttributes.Hidden;

    }
}

StreamReader和StreamWriter

StreamReader 读取流,

实现文件读取功能,并且参数可以直接是路径和编码

using()

声明一个块级的作用域,在声明的变量,在{}体之后已经被释放

StreamWriter 写入对象

实例

cs 复制代码
 internal class Program
 {
     static void Main(string[] args)
     {
         //BinaryReader br = new BinaryReader(,)//二进制读取原始数据参数是文件流,必须借助fileStream,有时候会出现文档内容出现乱码
         //StreamReader 读取流,实现文件读取功能,并且参数可以直接是路径和编码
         //using(),声明一个块级的作用域,在声明的变量,在{}体之后已经被释放
         using (StreamReader sr = new StreamReader(@"1.txt",Encoding.UTF8))
         {
             //sr.ReadLine() 读取一行
             string lines;
             while ((lines=sr.ReadLine())!=null) //一行一行去读,如果读取这一行赋值lines,并且lines==null证明读取完了
             {
                 Console.WriteLine(lines);
             }
         }


          //StreamWriter 写入对象
         using (StreamWriter sw = new StreamWriter(@"2.txt"))
         {
             sw.WriteLine("平安夜买一个苹果");
         }



             Console.ReadKey();
     }
 }

BufferedStream

缓存区存储对象,特点读取性能比较快

也需要包装其他流 与 BinaryWirte一样,读取只有这一个类

创建临时存储对象

FileStream fileStream = null;
BufferedStream buff = new BufferedStream();

写入内容 传递一个字节数组

byte[] infor1 = new UTF8Encoding().GetBytes("窗前地上霜,疑是明月光,举头思故乡,低头望明月");

buff.Write(infor1,0,infor1.Length);

创建读取储存对象

buff = new BufferedStream()

实例

cs 复制代码
 internal class Program
 {
     static void Main(string[] args)
     {
         //BufferedStream 缓存区存储对象,特点读取性能比较快,
         //也需要包装其他流 与 BinaryWirte一样,读取只有这一个类
         
         //1 创建临时存储对象
         FileStream fileStream = null;
         BufferedStream buff = new BufferedStream(File.Create(@"1.txt"));

         //2 写入内容 传递一个字节数组
         byte[] infor1 = new UTF8Encoding().GetBytes("窗前地上霜,疑是明月光,举头思故乡,低头望明月");
         buff.Write(infor1,0,infor1.Length);//从字节数组的0位置开始写 写 字节数组长度的内容

         byte[] infor2 = new UTF8Encoding().GetBytes("Goood Good Study day day up");
         buff.Write(infor2, 0, infor2.Length);

         byte[] infor3 = new UTF8Encoding().GetBytes("似乎覅外购单很符合");
         buff.Write(infor3, 0, infor3.Length);
         buff.Flush();
         buff.Close();

         //3 创建读取储存对象
         buff = new BufferedStream(File.OpenRead(@"1.txt"));

         byte[] arr = new byte[buff.Length];//定义数组存储读取的数据 长度为缓存区的大小
         buff.Read(arr, 0, arr.Length);
         while(buff.Read(arr, 0, arr.Length)>0)//如果数据没读完 继续读取
         {
             Console.WriteLine(Encoding.UTF8.GetString(arr));//把are转成字符串进行展示
         }

     }
 }
相关推荐
这是程序猿2 小时前
基于java的ssm框架经典电影推荐网站
java·开发语言·spring boot·spring·经典电影推荐网站
Nan_Shu_6142 小时前
学习:Java (1)
java·开发语言·学习
李慕婉学姐2 小时前
【开题答辩过程】以《基于PHP的饮食健康管理系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
开发语言·php
李慕婉学姐2 小时前
【开题答辩过程】以《基于PHP的养老中心管理系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
开发语言·php
曹牧2 小时前
Java:String.startsWith 方法
java·开发语言
秃然想通2 小时前
Java多态完全指南:深入理解“一个接口,多种实现”
java·开发语言
stevenzqzq3 小时前
Compose基础入门
开发语言·compose
米优3 小时前
C/C++中实现自定义自动释放堆内存空间类
c语言·开发语言·c++
傻啦嘿哟3 小时前
Python上下文管理器:优雅处理资源释放的魔法工具
开发语言·python