IO操作

news/2024/10/18 11:26:30/文章来源:https://www.cnblogs.com/comradexiao/p/18473907

基本概念

System.IO 命名空间有各种不同的类,用于执行各种文件操作,如创建和删除文件、读取或写入文件,关闭文件等。以下是一些常用的类及其用途:

File类

提供静态方法来读写文件,如复制、删除、移动文件等。

File.Exists():判断文件是否存在

if (File.Exists("D:\\test.txt"))Console.WriteLine("文件存在");

File.Create():创建文件

FileStream fs = File.Create("D:\\file.txt");

File.WriteAllBytes()、File.WriteAllLines()、File.WriteAllText():写入文件

//将指定字节数组 写入到指定路径的文件中
byte[] bytes = BitConverter.GetBytes(999);
File.WriteAllBytes("D:\\file.txt", bytes);//将指定的string数组内容 一行行写入到指定路径中
string[] strs = new string[] { "123", "456", "abc"};
File.WriteAllLines("D:\\file.txt", strs);//将指定字符串写入指定路径
File.WriteAllText("D:\\file.txt", "Hello World!");

File.ReadAllBytes()、File.ReadAllLines()、File.ReadAllText():读取文件

//读取字节数据
byte[] bytes = File.ReadAllBytes("D:\\file.txt");
Console.WriteLine(BitConverter.ToInt32(bytes,0));
//读取所有行信息
string[] strs = File.ReadAllLines("D:\\file.txt");
for (int i = 0; i < strs.Length; i++)Console.WriteLine(strs[i]);
//读取所有文本信息
Console.WriteLine(File.ReadAllText("D:\\file.txt"));

File.Delete():删除文件

//如果删除打开着的文件 会报错
File.Delete("D:\\file.txt");

File.Copy():复制文件

//参数一:现有文件
//参数二:目标文件
File.copy("D:\\currenfile.txt","D:\\targetfile.txt");

File.Replace():文件替换

//7.文件替换
//参数一:用来替换的路径
//参数二:被替换的路径
//参数三:备份路径
File.Replace("D:\\originalfile.txt","D:\destination.txt","D:\backup.txt");

File.Open():以流的形式打开文件并写入或读取

Filestream fs = File.Open("D:\\file.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);

FileStream类

FileSteam是文件流类,主要作用是读写文件的细节,File只能整体读写文件,而FileStream可以以字节的的形式处理文件

创建或打开指定文件

//参数一:路径//参数二:打开模式FileMode
//CreateNew:创建新文件 如果文件存在则报错
//Create:创建文件,如果文件存在则覆盖
//Open:打开文件,如果文件不存在则报错
//OpenOrCreate:打开或者创建文件根据实际情况操作
//Append:若存在文件,则打开并查找文件尾,或者创建一个新文件
//Truncate:打开并清空文件内容//参数三:访问权限FileAccess
//Read:允许别的程序读取当前文件
//Write:允许别的程序写入该文件
//ReadWrite:允许别的程序读写该文件//参数四:共享权限FileShare
//None:拒绝共享当前文件。任何打开文件的请求(通过此处理器进程)都将失败,直到文件关闭。
//Read:允许别的程序读取当前文件
//Write:允许别的程序写入该文件
//ReadWrite:允许别的程序读写该文件
//Delete:允许后续删除文件。
//Inheritable:使文件句柄可由子进程继承。Win32不直接支持此功能。
FileStream fs = new FileStream("D:\\file.txt", FileMode.Create, FileAccess.ReadWrite);//方法一
Filestream fs = File.Open("D:\\file.txt", FileMode.Create, FileAccess.ReadWrite);//方法二
FileStrem fs = File.Create("D:\\file.txt");//方法三

重要属性和方法

FileStream fs1 = File.Create("D:\\file.txt");
byte[] bytes1 = BitConverter.GetBytes(100);
//写入
//参数一:写入的字节数组
//参数二:数组中开始的索引
//参数三:写入多少字节
fs1.Write(bytes1, 0, bytes1.Length);fs1.Close();//关闭流,当文件读写完毕后一定执行
fs1.Dispose();//缓存资源销毁回收FileStream fs2 = File.Open("D:\\file.txt",FileMode.Open);
byte[] bytes2 = new byte[4];
//读取
//参数一:用于存储读取字节数组的容器
//参数二:容器开始的位置
//参数三: 读取多少个字节装入容器
//返回值:当前索引流前进了几个位置
int index = fs2.Read(bytes2, 0, bytes2.Length);
Console.WriteLine(BitConverter.ToInt32(bytes2, 0));//输出100

Directory类

用于创建、删除目录,以及列出目录内容等

Directory.Exists():判断文件夹是否存在

if( Directory.Exists("D:\\directory"))Console.WriteLine("文件夹存在");

Directory.CreateDirectory():创建文件夹

Directory.CreateDirectory("D:\\directory");

Directory.Delete():删除文件夹

//参数一:路径
//参数二:是否删除非空目录,如果为true,删除整个目录,如果是false,仅当该目录为空时才可以删除
Directory.Delete("D:\\directory", true);

Directory.GetDirectories():得到指定路径下所有文件夹名

string[] str = Directory.GetDirectories("D:\\directory");
for (int i = 0; i < str.Length; i++)
{Console.WriteLine(str[i]);
}

Directory.GetFiles():得到指定路径下所有文件名

string[] str = Directory.GetFiles("D:\\directory");

DirectoryInfo和FileInfo类

DirectoryInfo目录信息类

我们可以通过它获取文件夹的更多信息,主要作用于以下两个地方

创建文件夹方法的返回值

DirectoryInfo dInfo = Directory.CreateDirectory("D:\\directory");
Console.WriteLine(dInfo.FullName);//完整目录
Console.WriteLine(dInfo.Name);//文件夹名

查找上级文件夹信息

dInfo = Directory.GetParent("D:\\directory");
//重要方法
//得到所有子文件夹的目录信息
DirectoryInfo[] dInfos = dInfo.GetDirectories();

FileInfo目录信息类

//可以通过DirectoryInfo得到该文件下的所有文件信息
FileInfo[] fInfos = dInfo.GetFiles();
for (int i = 0; i < fInfos.Length; i++)
{Console.WriteLine(fInfos[i].Name);//文件名Console.WriteLine(fInfos[i].FullName);//路径名Console.WriteLine(fInfos[i].Length);//字节长度Console.WriteLine(fInfos[i].Extension);//后缀名
}

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

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

相关文章

第36篇 linux服务器上启动framework应用程序流程

framework开发的应用程序,一般是不会在linux服务器上运行的,但是我们可以通过mono进行应用部署 1.查看linux服务上是否已经安装mono-core 方式1: rpm命令查看 rpm -qa | grep mono-core有结果返回,说明已经安装方式2:使用yum list installed yum list installed | grep mo…

GCM

GaloisCounter Mode (GCM) 运算符与函数$0^s$包含了$s$个$0$的比特串。$\mbox{CIPH}_K⁡(X)$在密钥$K$下对分组$X$应用分组密码得到的输出。$\mbox{GCTR}_K⁡(ICB,X)$在密钥K下对包含初始组计数$ICB$的比特串X应用包含给定分组加密的 $\mbox{GCTR}$函数的输出。$\mbox{GHASH}_H…

音频压缩

声音压缩 压缩音频在微信上的播放效果结论:在Pc环境测试后,压缩音频在微信环境中也拥有相同表现。 码率对音质的影响设置总结 将码率设置为64k和原版几乎没有差别,压缩率35% 将码率设置到48k,仔细可以听出些许差别,在对音频要求不高的地方可以使用。 转码率工具 https://w…

创新突破!天翼云荣膺CCF HPC China 2024高性能计算创新大奖

近日,第20届CCF全国高性能计算学术年会(CCF HPC China 2024)在武汉隆重召开。CCF HPC China是全球高性能计算领域三大标志性盛会之一,本届大会以“华章廿载 新质未来”为主题,由12位院士领衔,携手来自算力领域的400多位顶尖学者,进行学术交流和专题分享。近日,第20届CC…

汽车零部件行业CRM应用数字化解决方案解析

1.行业背景与挑战分析 近年来,随着国家对新能源汽车行业的大力支持,国内汽车产业不仅在国内市场实现了弯道超车,而且新能源汽车的海外出口也开拓了新的市场,为自主品牌的新能源战略贡献了新的增长点;这一迅猛发展的趋势也带动了汽车零部件行业的增长。 同时,汽车零部件行…

gjoi 10.18

模拟赛不通知,模拟赛巨大绑包,素质有待降低。T1 向量 不难发现操作次数固定,操作其实相当于在有两位的前提下减少一位,如果和 \(\geq 10\) 花费 \(9\) 的代价加 \(1\) 位。答案肯定是 \(初始位数+额外位数-1\),现在问题是额外位数是什么,不妨设序列和为 \(sum\),额外次数…

Leetcode 721. 账户合并

1.题目基本信息 1.1.题目描述 给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该账户的邮箱地址。 现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必定属于…

网管平台(基础篇):网管系统的重要性

网管系统的核心地位:数字世界的稳定舵手 在信息技术日新月异的今天,网络如同一条无形的纽带,将世界紧密相连。然而,这条纽带背后隐藏着无数复杂的节点与链路,如何确保它们高效、稳定地运行,成为了一个亟待解决的问题。网管系统,作为数字世界的稳定舵手,以其强大的监控与…

揭秘!如何设计高可用、高性能、高扩展的异地多活系统?【转】

1 关于基础架构 2 关于异地多活 3 写时延是关键 4 写量大拆分片 5 做隔离拆分片 6 其他影响因素 7 数据复制架构 8 数据影响路由 9 架构选型模式异地多活是分布式系统架构设计的一座高峰,当业务系统走到需要考虑异地多活这一步,其体量和复杂度都会达到很高的水准。接入层、逻…

引擎模块自身占用

引擎自身中存在内存开销的部分纷繁复杂,可以说是由巨量的“微小”内存所累积起来的,比如GameObject及其各种Component(最大量的Component应该算是Transform了)、ParticleSystem、MonoScript以及各种各样的模块Manager(SceneManager、CanvasManager、PersistentManager等)……

怎样修改网站ftp密码?

修改网站FTP密码的方法取决于你使用的FTP服务提供商或Web主机控制面板。以下是一些常见情况下的步骤:通过cPanel修改FTP密码:登录到你的cPanel账户。 在文件部分找到“FTP账户”选项并点击。 选择你想要修改密码的FTP账户。 点击“更改密码”按钮。 输入新密码,并确认。 点击…