C#文件操作(一)

一、前言

        学习心得:C# 入门经典第8版书中的第20章《文件》

二、操作文件的相关类

        在C#应用程序中Syste.IO名称空间包含用于在文件中读写数据的类。在此我列举一下File、Directory、Path、FileInfo、DirectoryInfo、FileSystemInfo、FileSystemWatcher。其中在System.IO.Compression名称空间中还包含读写压缩文件。DeflateStream、GZipStream。这两个在后续文章中我会慢慢提到解释,但由于大量方法在网上都可以查找得到,本节我仅仅只介绍部分方法。

三、File和Directory类

1 File 类

        File通常用于操作文件的静态类(Copy、Create、Delete、Open、Move) 都是些常见的静态方法这里不做介绍,大家如不了解使用可以查一查。

2 Directory类

        Directory通常用于操作文件夹的静态类,其中DIcrectory中有很多方法如: CreateDirectory 创建目录、Delete 删除目录、GetDirectories 获得指定目录下的目录名、GetFiles  获得指定目录下的文件名、GetFileSystemEntries 获取指定目录下的目录名和文件名、Move 移动文件、GetCurrentDirectory 获取应用程序的工作目录 GetCreationTime 获取目录创建的事件等很多方法都很简单使用。

举个例子:

Directory.CreateDirectory(@"C\目录");
Directory.GetDirectories(@"C\目录");
Directory.GetFiles(@"C\目录");
Directory.GetFileSystemEntries(@"C\目录");
Directory.GetCurrentDirectory();
Directory.GetCreationTime(@"\目录");
Directory.Delete(@"C\目录");
//返回目录名的IEnumerable<string>集合
IEnumerable<string> s = Directory.EnumerateDirectories(@"C:\Users\Administrator\Desktop\练习\bin\Debug");
//返回文件名的IEnumerable<string>集合
IEnumerable<string> s2 = Directory.EnumerateFiles(@"C:\Users\Administrator\Desktop\练习\bin\Debug");
//返回文件和目录名的IEnumerable<string>集合
IEnumerable<string> s3 = Directory.EnumerateFileSystemEntries(@"C:\Users\Administrator\Desktop\练习\bin\Debug");

四、FileInfo类 

        FileInfo类和File有很多相似的方法,但它不是静态类,它需要一个字符串参数,作为方法操作的文件路径。其次FileInfo对象是表示一个磁盘位置或者网络位置。

举个例子:

 //使用File类需要每次指定文件路径File.Open(@"C\",FileMode.Open,FileAccess.Read);//使用Fileinfo指定一次后方法都是对当前路径进行操作FileInfo fileInfo = new FileInfo(@"C\");if (fileInfo.Exists){//读取fileInfo.OpenRead();}

问:什么时候使用File什么时候使用FileInfo?


 答:在多次对一个文件操作时使用FileInfo ,因为它不需要重复指明操作路径。但如果只对文件操作一次的情况下推荐还是使用File静态类因为它不需要创建对象,单一调用要快一点,不必实例化新对象在调用方法 。

提示:路径中@“C\” 前面的@ 是代表取消当前字符串的转义符效果,不加@则需要将\改为\\才能代表\的含义。

五、DirectoryInfo 类

        DirectoryInfo 与Directory类,类似,在使用选择上也和上述File和FileInfo的使用场景类似。其中它有两个特别的属性。

 DirectoryInfo directoryInfo = new DirectoryInfo(@"C\菜板");//获取一个包含当前目录的目录
var s= directoryInfo.Parent;//获取包含目录的根目录
var str= directoryInfo.Root;

六、相对路径与绝对路径

        在文章当中我们使用的路径都是绝对路径。绝对路径是它直接指向了磁盘中的文件所在位置但我们也可以使用相对路径来指定我们文件所在的位置。使用“文件名称.后缀名”

举个例子:

//在 项目文件\bin\Debug\中创建了文件夹
var str =  Directory.CreateDirectory("A文件夹");

示例解释:

        "A文件夹"代表的文件就是指 项目文件\bin\Debug 路径下创建一个“A文件夹”为名称的文件夹。相对位置都是指向工作目录, 工作目录就是=>项目文件\bin\Debug。

效果:

 

提示:获取相对位置,上移一个目录路径使用..代表当前目录的上一个目录。

举个例子(在bin目录中创建文件夹):

 var str =  Directory.CreateDirectory(@"..\A文件夹");

 本章还有大部分内容,我们下一篇见!!!

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

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

相关文章

伦敦金交易内地与香港有何区别

伦敦金交易是国际银行间市场层面的现货黄黄金交易&#xff0c;亚洲市场的交易中心在中国香港&#xff0c;现在不管是香港本地还是内地的投资者&#xff0c;都可以在网上开户&#xff0c;通过香港的平台参与伦敦金交易&#xff0c;所得到的服务是同等的、公平的、与国际市场接轨…

理论篇:什么是NPM以及为什么NPM如此重要

&#x1f4cc; NPM&#xff0c;全称是 Node Package Manager&#xff0c;NodeJS 包管理工具 当我们开始现代化前端项目开发时&#xff0c;总是会被告知需要提前安装NodeJS&#xff0c;而且NodeJS软件包不仅仅会在我们的开发设备上安装NodeJS运行环境&#xff0c;同时会附带NPM工…

2. 创建型模式 - 抽象工厂模式

亦称&#xff1a; Abstract Factory 意图 抽象工厂模式是一种创建型设计模式&#xff0c; 它能创建一系列相关的对象&#xff0c; 而无需指定其具体类。 问题 假设你正在开发一款家具商店模拟器。 你的代码中包括一些类&#xff0c; 用于表示&#xff1a; 一系列相关产品&…

一套rk3588 rtsp服务器推流的 github 方案及记录 -03(完结)

opencv 解码记录 解码库使用的时候发现瑞芯微以前做过解码库对ffmpeg和gstreamer的支持 然后最近实在不想再调试Rtsp浪费时间了&#xff0c;就从这中间找了一个比较快的方案 ffmpeg 带硬解码库编译 编译流程参考文献 https://blog.csdn.net/T__zxt/article/details/12342435…

C++11特性:可调用对象以及包装器function的使用

在C中存在“可调用对象”这么一个概念。准确来说&#xff0c;可调用对象有如下几种定义&#xff1a; 是一个函数指针&#xff1a; int print(int a, double b) {cout << a << b << endl;return 0; } // 定义函数指针 int (*func)(int, double) &print…

LeetCode刷题--- 括号生成

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述递归递归、搜…

Nginx 实战闲谈第一讲:HTTP协议介绍

基本介绍 1.HTTP含义 HTTP 全称&#xff1a;Hyper Text Transfer Protocol 中文名&#xff1a;超文本传输协议 HTTP就是将用户的请求发送到服务器&#xff0c;将服务器请求到的内容传输回给浏览器&#xff0c;浏览器进行解析&#xff0c;解析后变成便于观看的页面。&#x…

vscode配置node.js调试环境

node.js基于VSCode的开发环境的搭建非常简单。 说明&#xff1a;本文的前置条件是已安装好node.js(具体安装不再赘述&#xff0c;如有需要可评论区留言)。 阅读本文可掌握&#xff1a; 方便地进行js单步调试&#xff1b;方便地查看内置的对象或属性&#xff1b; 安装插件 C…

java:获取线程的Id

JDK 19及以后版本&#xff0c;使用Thread的threadId()方法获取当前线程的Id&#xff08;identifier &#xff09;。这个Id是一个正的长整型&#xff0c;在线程创建的时候产生。这个Id是唯一的&#xff0c;并且在线程的生命周期期间保持不变。 JDK 19以前的版本&#xff0c;使用…

Unity中Shader平移矩阵

文章目录 前言方式一&#xff1a;对顶点本地空间下的坐标进行相加平移1、在属性面板定义一个四维变量记录在 xyz 上平移多少。2、在常量缓冲区进行申明3、在顶点着色器中&#xff0c;在进行其他坐标转化之前&#xff0c;对模型顶点本地空间下的坐标进行转化4、我们来看看效果 方…

Java:将字符串重复多次串接起来输出

String的函数public String repeat(int count)&#xff0c;可以将当前字符串重复count次串接起来输出。 如果字符串是空的&#xff0c;或者count的值是0&#xff0c;那么返回空字符串。 代码示例1&#xff1a; package com.thb;public class Test5 {public static void main(…

CVE-2022-22978 Spring Security越权访问漏洞

简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。 Spring Security底层实现为一条过滤器链&#xff0c;就是用户请求进来&#xff0c;判断有没有请求的权限&#xff0c;抛出异常&#xff0c;重定向跳转。 影响版本 S…

【教程】cocos2dx资源加密混淆方案详解

1,加密,采用blowfish或其他 2,自定是32个字符的混淆code 3,对文件做blowfish加密,入口文件加密前将混淆code按约定格式(自定义的文件头或文件尾部)写入到文件 4,遍历资源目录,对每个文件做md5混淆,混淆原始串“相对路径”“文件名”混淆code, 文件改名并且移动到资源目录根…

C#线程的定义和使用方法

引言 在C#编程语言中&#xff0c;线程是一种并发执行的机制&#xff0c;允许程序同时执行多个任务。线程的使用使得我们能够利用计算机的多核处理器&#xff0c;实现程序的并行执行&#xff0c;提高系统的性能和响应能力。本文将详细介绍C#中线程的定义和使用方法&#xff0c;涵…

大数据可视化BI分析工具Apache Superset结合内网穿透实现远程访问

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…

Flask ImportError: DLL load failed: 找不到指定的模块。

一、anaconda环境 将anaconda3安装路径下DDL目录中的 libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll 拷贝到 虚拟环境目录下的DLL中 完美解决 成功了给个赞吧&#xff01;

三大主流前端框架介绍及选型

在前端项目中&#xff0c;可以借助某些框架&#xff08;如React、Vue、Angular等&#xff09;来实现组件化开发&#xff0c;使代码更容易复用。此时&#xff0c;一个网页不再是由一个个独立的HTML、CSS和JavaScript文件组成&#xff0c;而是按照组件的思想将网页划分成一个个组…

智能优化算法应用:基于未来搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于未来搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于未来搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.未来搜索算法4.实验参数设定5.算法结果6.…

Java:获取线程组的最大优先级

java.lang.ThreadGroup的getMaxPriority()函数返回该线程组的最大优先级。这个最大优先级就等于该线程组中新创建线程的最大优先级。 代码示例&#xff1a; package com.thb;public class Test5 {public static void main(String[] args) {ThreadGroup threadGroup Thread.c…

Unity | Shader基础知识(第八集:案例<漫反射材质球>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、什么是漫反射材质球 三、 漫反射进化史 1 三种算法结果的区别 2 具体算法 2.1 兰伯特逐顶点算法 a.本小节使用的unity自带结构体。 b.兰伯特逐顶点算法公式 c.代码实现——兰伯特逐顶点算法 2.2 代码实现——兰伯特逐…