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转成字符串进行展示
         }

     }
 }
相关推荐
你怎么知道我是队长8 小时前
C语言---头文件
c语言·开发语言
期待のcode8 小时前
Java虚拟机的运行模式
java·开发语言·jvm
我是唐青枫8 小时前
C#.NET ConcurrentDictionary<TKey, TValue> 深度解析:原理与实践
c#·.net
hqwest8 小时前
码上通QT实战25--报警页面01-报警布局设计
开发语言·qt·qwidget·ui设计·qt布局控件
a程序小傲8 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
HellowAmy8 小时前
我的C++规范 - 玩一个小游戏
开发语言·c++·代码规范
徐先生 @_@|||9 小时前
Palantir Foundry 五层架构模型详解
开发语言·python·深度学习·算法·机器学习·架构
tang7778910 小时前
爬虫如何绕过绕过“5秒盾”Cloudflare:从浏览器指纹模拟到Rust求解之不完全指南
开发语言·爬虫·rust·cloudflare
Yuer202510 小时前
什么是 Rust 语境下的“量化算子”——一个工程对象的最小定义
开发语言·后端·rust·edca os·可控ai
hqwest10 小时前
码上通QT实战26--系统设置01-系统设置布局
开发语言·qt·qss·qt基础控件·qt布局控件·qt表格控件