C# IO及文件管理

news2025/1/23 15:26:57

一 System.IO

① System.IO名字空间;
② 提供了许多用于;
③ 文件和数据流进行读写操作的类;

二 流的分类

1 Stream类

按存取位置分:FileStream,MemeryStream,BufferedStream;

2 读写类

BinaryReader和BinaryWriter;
TextReader和TextWriter;
StreamReader和StreamWriter;
StringReader和StringWriter;

3 其关系

FileStream fs=new FileStream(@“c:\temp\foo.txt”,FileMode.Create);
StreamWriter writer=new StreamWriter(fs);
在这里插入图片描述

三 文件及文件及管理

1 对文件和文件夹操作的类

① FileInfo 具体的文件;
② File 提供static方法;
③ DirectoryInfo 具体的文件夹;
④ Directory 提供static方法;
⑤ FileSystemInfo 是FileInfo及DirectoryInfo的父类;
⑥ path 文件路径类;

2 显示文件及文件夹的信息

① 使用FileInfo对象,就可以获取文件大小等各种信息;
② 使用DirectoryInfo对象,就可以获取文件夹大小等各种信息;

3 FileInfo对象及属性

1) 建立对象

new FileInfo 文件物理路径;

2)常用属性

① Name 文件名称;
② Extension 文件扩展名;
③ FullName 文件完全路径(物理路径)
④ Length 文件大小,单位为字节
⑤ CreationTime 文件创建时间;
⑥ LastAccessTime 文件上次访问时间;
⑦ LastWriteTime 文件上次修改时间;
⑧ DirectoryName 所在文件夹;
⑨ Attributes 文件属性、如只读、隐藏等;

4 DirectoryInfo 对象及其属性

1) 建立对象

new DirectoryInfo 文件物理路径;

3) 常用的属性:

① Name 文件夹名称;
② FullName 文件夹完全路径(物理路径);
③ CreationTime 文件夹创建时间;
④ LastAccessTime 文件夹上次访问时间;
⑤ LastWriteTime 文件夹上次修改时间;
⑥ Parent 父文件夹;
⑦ Root 所在根目录;

5 文件的新建、复制、移动和删除

1) 使用File类的static方法既可完成对文件的操作

① Create(filePath);
② Copy(filePath1,filePath2);
③ Move(filePath1,filePath2);
④ Delete(filePath);
⑤ Exists(filePath);
⑥ CreateText(filePath);

2) 文件夹的新建、移动和删除

使用Directory的static方法可以完成对文件的操作。
① CreateDirectory(DirPath);
② Move(DirPath1,DirPath2);
③ Delete(DirPath);
④ Exists(DirPath);
⑤ GetDirectories(DirPath);
⑥ GetFiles(DirPath);

3) 显示指定文件夹下的子文件夹和子文件

使用Directory
GetDirectories和GetFiles的static方法。
使用DirectoryInfo对象
GetDirectories和GetFiles实例方法;
这两个方法分别返回DirectoryInfo对象数组和FileInfo对象数组。

4) Path类 提供路径的处理

① Combine;
② GetDirectoryName;
③ GetExtension;
④ GetFileName;
⑤ GetFileNameWithoutExtension;
⑥ GetFullPath;
⑦ GetPathRoot;
⑧ GetTempFileName;
⑨ GetTempPath;

搜索文件夹下所有的文件
递归列出所有文件

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 递归列出所有文件
{
    class Program
    {
        public static void Main(string[] args)
        {
            ListFiles(new DirectoryInfo(@"C:\Users\quyua\Desktop\200个WinForm实例源码"));
            Console.ReadKey();
        }

        public static void ListFiles(FileSystemInfo info)
        {
            if (!info.Exists)
                return;

            DirectoryInfo dir = info as DirectoryInfo;

            if (dir == null)
                return;//不是根目录

            FileSystemInfo[] files = dir.GetFileSystemInfos();
            
            for(int i=0;i<files.Length;i++)
            {
                FileInfo file = files[i] as FileInfo;

                if(file!=null)  //是文件
                {
                    Console.WriteLine(file.FullName + "\t" + file.Length);
                }
                else//是目录
                {
                    ListFiles(files[i]);//对于子努力,进行递归调用
                }
            }
        }
    }
}

监视文件的变化Watcher

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 监视文件的变化Watcher
{
    public class Program
    {
        public static void Main()
        {
            const string path = @"C:\Users\quyua\Desktop\200个WinForm实例源码";

            FileSystemWatcher watcher = new FileSystemWatcher();

            watcher.Path = path;
            watcher.Filter = "*.exe";

            watcher.NotifyFilter = NotifyFilters.LastAccess |
                NotifyFilters.LastWrite | NotifyFilters.FileName |
                NotifyFilters.DirectoryName;

            //事件处理函数
            watcher.Changed += new FileSystemEventHandler(OnChanged);
            watcher.Created += new FileSystemEventHandler(OnChanged);
            watcher.Deleted += new FileSystemEventHandler(OnChanged);
            watcher.Renamed += new RenamedEventHandler(OnRenamed);

            //开始监视
            watcher.EnableRaisingEvents = true;

            //等待用户输入q才结束程序
            Console.WriteLine("Press 'q' to quit the sample.");
            while (Console.Read() != 'q') ;
            Console.ReadKey();
        }
        //事件处理函数
        public static void OnChanged(object source,FileSystemEventArgs e)
        {
            //显示哪些文件做了何种修改
            Console.WriteLine("File:" + e.FullPath + " " + e.ChangeType);
        }

        public static void OnRenamed(object source ,RenamedEventArgs e)
        {
            //显示被更改的文件名
            Console.WriteLine("File:{0}renamed to{1}", e.OldName, e.FullPath);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从 0 到 1 搞一个 Compose Desktop 版本的玩天气之打包

从 0 到 1 搞一个 Compose Desktop 版本的玩天气之打包 大家好&#xff0c;前两篇文章大概介绍了下上手 Compose Desktop 和自定义绘制时遇到的一些问题&#xff0c;项目的最终实现效果如下&#xff1a; 视频代码写好了&#xff0c;该弄的动画也弄了&#xff0c;该请求的网络数…

【数据结构】八大排序算法详解

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《数据结构》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; 排序前言一…

汇编语言第一章:基础知识

1. 基础知识 机器语言 机器语言是机器指令的集合&#xff0c;是一台机器可以正确执行的命令。现在一般电子计算机的机器指令是一列二进制数字。机器指令集是机器语言。 汇编语言 机器语言难以辨别和记忆&#xff0c;所以产生了汇编语言。汇编语言的主体是汇编指令。 操作&…

on-device training

又搬来个好玩呃 说来又想试试了 , 仅用256KB就实现单片机上的神经网络训练&#xff08;training,notinference&#xff09;&#xff0c;从此终端智能不再是单纯的推理&#xff0c;而是能持续的自我学习自我进化 On-Device Training under 256KB Memory 说到神经网络训练&#…

编译原理实验四

编译原理实验四 实验要求 cminus-f的词法分析和语法分析部分已经完成&#xff0c;最终得到的是语法分析树。而为了产生目标代码&#xff0c;还需要将语法分析树转为抽象语法树&#xff0c;通过抽象语法分析树生成中间代码(即IR)&#xff0c;最后使用中间代码来进行优化并生成…

easyExcel导出表头合并 不得不说真牛

有个导出单元格合并的任务&#xff0c;表头不规则合并格式&#xff0c;看得就烦&#xff0c;尤其是对于没玩儿过合并的我来说&#xff0c;任务放在哪里不知咋做&#xff0c;网上也看了一堆合并的方法&#xff0c;自己写注解来写的那些&#xff0c;麻烦得要命&#xff0c;我写一…

48.python break语句-终止循环

48.break语句-终止循环 文章目录48.break语句-终止循环1.循环控制2.break的作用3. 语法4. 实操练习5. 知识扩展&#xff1a;print的位置6. break语句循环图1.循环控制 在循环的过程中如果要退出循环&#xff0c;我们可以用break语句和continue语句。 2.break的作用 break [b…

Android入门第49天-使用RadioGroup+Fragment来重构类首页底部4个按钮的界面

简介 我们在&#xff1a;Android入门第47天-Fragment的基本使用 中使用Fragment制作了一个类首页底部含4个按钮的界面。今天的课程我们要做的是把第47天里的代码中一部分共用的东西抽象到res/values/themes.xml文件中。另外我们使用RadioGroup天然的只有一个可以被选中来代替…

Python学习笔记-文件及文件夹操作

记述python中关于文件和目录的基本操作。 一、基本文件操作 1.文件的创建和打开 file open(filename[,mode[,buffering]]) file&#xff1a;文件对象filename&#xff1a;文件路径&#xff0c;字符串类型&#xff0c;若要打开的文件与程序文件在同一文件夹&#xff0c;可直…

OPengl学习(三)——绘制几何物体和状态管理

文章目录0、 写在前面1、绘图工具1.1、清除窗口1.2、指定颜色1.3、强制完成绘图1.4、坐标系统工具2、点&#xff0c;直线&#xff0c;多边形2.1、填充多边形3、点&#xff0c;直线&#xff0c;多边形细节刻画4、基本状态管理0、 写在前面 1、OpenGL自身是一个巨大的状态机(Sta…

【CELL】compass利用单细胞转录组+流平衡分析预测细胞代谢状态,促进免疫细胞代谢研究

细胞代谢调控正常细胞功能以及多种疾病状态的病理生理。最近&#xff0c;免疫细胞代谢研究&#xff08;immunometabolism&#xff09;成为一个研究热点&#xff0c;揭示了包括抗病毒免疫、自身免疫和抗肿瘤反应在内的炎症代谢调节。然而&#xff0c;由于代谢网络的规模和复杂性…

BIO、NIO、AIO理解(I/O模型)

IO模型(unix网络编程第一卷) unix有五种I/O模型&#xff0c;好像其他系统也差不多吧。 I/O模型主要是两个阶段&#xff1a;等待数据与把数据从内核空间复制到用户空间&#xff0c;然后根据这两个阶段的不同&#xff0c;分类出来下面几类I/O模型。 前四个是同步IO,最后一个是异…

高并发下你还敢用ArrayList?过来看看CopyOnWriteArrayList吧!

一、ArrayList线程不安全 在Java的集合框架中&#xff0c;想必大家对ArrayList肯定不陌生&#xff0c;单线程的情况下使用它去做一些CRUD的操作是非常方便的&#xff0c;先来看看这个例子&#xff1a; public class ListTest {public static void main(String[] args) {List&…

GIS基于智慧城市建设的作用

​​​​​智慧城市的建设对于改善居民的生活质量和提高城市的管理水平&#xff0c;有着公认的推动作用。其中&#xff0c;地理信息技术特别是GIS平台&#xff0c;在智慧城市的建设过程中扮演着关键角色。 在现实情况中&#xff0c;除了政策本身的一些因素&#xff0c;受限于一…

Web前端105天-day44-JSCORE

JSCORE04 目录 前言 一、复习 二、forEach 三、reduce 四、展开语法 五、解构语法 六、形参默认值 七、剩余参数 总结 前言 JSCORE04学习开始 一、复习 JS的第6个版本, 带来了大量的新特性, 新语法let/const : 两个新的声明变量的方式 新的作用域 脚本: 对应全局, 用…

RocketMQ中的线程池是如何创建的?

前言 大家好&#xff0c;今天主要来和大家聊一聊RocketMQ中的线程池是如何创建的&#xff0c;如何设置线程池数量&#xff0c;同时也可以从中去学习到一些线程池的实践和需要注意的一些细节。 RocketMQ在哪些地方使用到了线程池&#xff1f; 在RocketMQ中存在了大量的对线程…

学籍信息网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 学籍信息管理&#xff1a;添加信息、修改信息、删除信息、查询信息 添加信息&#xff0c;管理员根据学生的将信息导入系…

[附源码]Python计算机毕业设计高校师资管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

行业分析| 智慧头盔在快对讲上的应用与实践

快对讲综合调度系统是基于移动通信网络&#xff0c; 整合集群对讲、视频监控、实时音视频技术、PSTN、GIS定位、IM和调度业务的产品&#xff0c;为客户提供专业对讲、视频会议、可视化融合指挥调度等功能为一体的音视频实时交互平台。 快对讲和智慧头盔 智慧头盔&#xff0c;…

PHP实验室管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP实验室管理系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据库为 mysql5.0&#xff0c;使用php语言开发。 PHP…