首页 > 其他分享 >IO操作

IO操作

时间:2024-10-18 11:23:59浏览次数:8  
标签:文件 Console File IO file Directory 操作 txt

基本概念

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);//后缀名
}

标签:文件,Console,File,IO,file,Directory,操作,txt
From: https://www.cnblogs.com/comradexiao/p/18473907

相关文章

  • sql-function
    在SQLite中,除了LENGTH函数,还有许多其他内置函数,分类如下:字符串函数UPPER(string):将字符串转换为大写。LOWER(string):将字符串转换为小写。SUBSTR(string,start,length):返回从指定位置开始的子字符串。TRIM(string):删除字符串两端的空白字符。REPLACE(string,old......
  • Linux内核中__iomem的解析
    内核代码中充斥着大量的__iomem修饰的void类型的指针,像下面这样:void__iomem*devm_ioremap_resource(structdevice*dev, conststructresource*res){ resource_size_tsize; void__iomem*dest_ptr; char*pretty_name; BUG_ON(!dev); if(!res||resourc......
  • 3191. 使二进制数组全部等于 1 的最少操作次数 I
    给你一个二进制数组nums。你可以对数组执行以下操作任意次(也可以0次):选择数组中任意连续3个元素,并将它们全部反转。反转一个元素指的是将它的值从0变1,或者从1变0。请你返回将nums中所有元素变为1的最少操作次数。如果无法全部变成1,返回-1。示例......
  • Survey on Reasoning Capabilities and Accessibility of Large Language Models Usin
    本文是LLM系列文章,针对《SurveyonReasoningCapabilitiesandAccessibilityofLargeLanguageModelsUsingBiology-relatedQuestions》的翻译。使用生物学相关问题对大型语言模型的推理能力和可访问性的调查摘要1引言2相关工作3方法4结果5讨论结论......
  • OmniGenBench: Automating Large-scale in-silico Benchmarking for Genomic Foundati
    本文是LLM系列文章,针对《OmniGenBench:AutomatingLarge-scalein-silicoBenchmarkingforGenomicFoundationModels》的翻译。OmniGenBench:基因组基础模型的大规模计算机基准测试自动化摘要1引言2OmniGenBench3基准结果4相关工作5结论摘要近年来人......
  • 初识TS-类型多种操作
    类型推论在ts中,没有明确指出类型,ts的类型推论会帮助提供类型类型断言当ts类型太宽泛的时候,可以使用类型断言 as 指定更加具体的类型constalink:HTMLElement=document.getElementById('link')alink.link?//这种写法会报错,HTMLElement类型太宽泛了正确写法//常用写......
  • 文生图:Stable Diffusion、Midjourny
    StableDiffusion(SD)和Midjourney(MJ)是当前流行的两款AI图像生成工具,它们各有特点和优势:**-StableDiffusion是完全开源的,**这意味着用户可以免费使用,并且有技术能力的用户可以自行修改和优化模型。很多国内的公司,都是基于这个模型,本地部署,自己只开发前端应用。StableDiff......
  • python文件操作
    1.文件的编码思考:计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?答案:使用编码技术(密码本)将内容翻译成0和1存入。计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中,同时也需要编码,将计算机保存的0和1,反向翻译回可以识别的内容不......
  • Burp Suite Professional 2024.9 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
    BurpSuiteProfessional2024.9formacOSx64&ARM64-领先的Web渗透测试软件世界排名第一的Web渗透测试工具包请访问原文链接:https://sysin.org/blog/burp-suite-pro-mac/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpSuiteProfessionalTheworld......
  • 【题解】Solution Set - NOIP2024集训Day56 哈希杂题
    【题解】SolutionSet-NOIP2024集训Day56哈希杂题https://www.becoder.com.cn/contest/5640「CF568C」NewLanguage做过的2-sat。「NOI2024」集合做过。做法见提交记录。「CSP-S2022」星战简要题意:给定有向图。修改使一条边失效/恢复;使一个点的所有入边......