IO操作
IO基础概念
lO操作:文件/文件夹 操作与读写。
文件夹: 用来管理计算机文件的,每一个文件夹对应一块磁盘空间,它提供了指向对应空间的地址它没有扩展名,也就不像文件的格式用扩展名来标识。
文件: 一个具有符号的一组相关联元素的有序序列。文件可以包含范围非常广泛的内容。系统和用户都可以将具有一定独立功能的程序模块、一组数据或一组文字命名为一个文件,它具有永久存储。
流:是个字节序列,可用于对后备存储进行读取和写入操作,后备存储可以是多个存储媒介之一(例如,磁盘或内存)。
Stream:支持读取和写入字节。所有表示流的类都继承自Stream类。
流涉及三个基本操作:
- 读取 - 将数据从流传输到数据结构 (如字节数组) 中。
- 写入- 将数据从数据源传输到流。
- 查找 - 对流中的当前位置进行查询和修改。
IO命名空间常用类
System.lO命名空间里,常用的类:
- File
- Filelnfo.Directory
- Directorylnfo
- Path
- StreamReader
- StreamWriterFileStream
- MemoryStream
- BufferedStream
- BinaryReader
- BinaryWriter
- StringReader
- StringWriter
- Stream
- TextReader
- TextWriter
1.文件路径操作:Path类简介
C#中的Path类提供了许多用于处理文件路径的方法。其中最常用的方法是GetFileName、GetFileNameWithoutExtension和GetDirectoryName。这些方法分别返回路径的文件名、不带扩展名的文件名以及文件夹目录的名称。此外,Path类还提供了GetFullPath方法,可以获取完整的文件路径。
在使用Path类时,需要先在路径的头部加上@符号,例如@C:\fuck.txt 。这样可以确保路径被正确解析并返回正确的结果。
除了常用的方法外,Path类还提供了一些其他有用的方法,例如CreateDirectory、Delete、Move等,可以用来创建、删除或移动文件或文件夹。同时,Path类还支持正则表达式,可以使用Regex类来进行复杂的路径匹配和处理。
总之,C#中的Path类是一个非常实用的工具,可以帮助我们方便地处理文件路径并进行各种操作。
C#中的Path类提供了一组方法,用于处理文件路径和目录。以下是一些常见的用法:
- 创建文件路径字符串:使用CreateDirectory、CreateFile或Combine方法创建一个文件路径字符串。例如:string path = Path.Combine(“C:\Users\JohnDoe”, “Documents”, “myfile.txt”);
- 获取当前工作目录:使用CurrentDirectory属性返回当前工作目录的路径。
- 获取完整路径:使用FullName属性返回完整路径,包括驱动器和文件夹名称。
- 获取只读文件路径:使用IsReadOnly属性检查文件是否为只读模式。
- 获取隐藏文件路径:使用IsHidden属性检查文件是否为隐藏模式。
- 获取系统文件路径:使用SystemFiles属性返回包含系统文件的目录列表。
- 获取扩展名:使用Extension属性返回文件扩展名。
- 获取文件名:使用FileName属性返回文件名。
- 获取文件大小:使用Length属性返回文件的大小(以字节为单位)。
- 获取文件类型:使用Type属性返回文件的类型(如文本文件、图像文件等)。
- 删除文件:使用Delete方法删除指定路径的文件。
- 移动文件:使用Move方法将文件从一个位置移动到另一个位置。
- 复制文件:使用Copy方法将文件从一个位置复制到另一个位置。
- 列出目录内容:使用EnumerateDirectories和EnumerateFiles方法分别列出指定目录下的所有子目录和所有文件。
总之,Path类提供了许多有用的方法和属性,可以方便地处理文件路径和目录。
定义 string filePath =@"E:/project/test/20180322.jpg";
方法 | 备注 | 效果 |
---|---|---|
System.IO.Path.ChangeExtension(filePath, "txt") | 更改路径字符串的扩展名 | E:/project/test/20180322.txt |
System.IO.Path.GetDirectoryName(filePath) | 返回指定路径字符串的目录信息 | E:/project/test/ |
System.IO.Path.GetExtension(filePath) | 返回指定的路径字符串的扩展名 | .jpg |
System.IO.Path.GetFileName(filePath) | 返回指定路径字符串的文件名和扩展名 | 20180322.jpg |
System.IO.Path.GetFileNameWithoutExtension(filePath) | 返回不具有扩展名的指定路径字符串的文件名 | 20180322 |
System.IO.Path.GetPathRoot(filePath) | 获取指定路径的根目录信息 | E:/ |
System.IO.Path.GetRandomFileName() | 返回随机文件夹名或文件名 | ct2h5b2h.sed |
System.IO.Path.GetTempFileName() | 创建唯一命名的零字节的临时文件并返回其绝对路径 | C:/Documents and Settings/Randy/Local Settings/Temp/tmpAD.tmp |
System.IO.Path.GetTempPath() | 返回当前系统的临时文件夹的路径 | C:/Documents and Settings/Randy/Local Settings/Temp/ |
System.IO.Path.HasExtension(filePath) | 返回路径是否包括文件扩展名 | True |
System.IO.Path.IsPathRooted(filePath) | 返回路径是绝对路径还是相对路径 | Ture |
System.IO.Path.Combine(@ "c: ", "b.txt ") | 返回合并后的路径 | C:/b.txt |
System.IO.Path.GetFullPath("20180322.jpg") | 查找文件并返回其绝对路径 | E:/project/test/20180322.jpg |
2.文件夹操作:DirectoryInfo类与Directory类操作
Directory类位于System.IO命名空间下,主要用来操作文件夹,常用操作有判断文件夹是否存在、创建文件夹、删除文件夹、剪切文件夹、获取文件夹下的全部或指定格式文件
DirectoryInfo
类是一个密封类,它可以用来创建、移动、枚举目录和子目录。
Directory
创建一个文件夹;如果文件夹已经存在,就什么都不干:Directory.CreateDirectory
例:Directory.CreateDirectory(@"c:\a");这里是在C盘创建一个名为a的文件夹。
删除一个文件夹:Directory.Delete
默认的第二个参数是false,只能删除空目录;第二个参数为true的时候就可以删除文件夹连同文件夹里的所有文件。
例:Directory.Delete(@"c:\a",true);这里是删除C盘名为a文件夹。
移动文件夹的位置:Directory.Move
例:Directory.Move(@"c:\a", @"d:\new");将C盘a文件夹移动到d盘变成名为new的文件夹。
判断文件夹是否存在,返回布尔类型:Directory.Exists
例:Directory.Exists(@"c:\a");判断C盘名为a的文件夹是否存在。
获取目录下的所有文件的路径,返回到字符串数组:Directory.GetFiles
例:第二个参数是筛选出只有jpg格式的文件,如果不填第二个参数,则返回全部文件。
string[] path=Directory.GetFiles(@"c:\a","*.jpg");遍历C盘a文件夹里面jpg格式的文件路径,并且保存在path数组里面。
获取目录下所有文件夹的路径,返回字符串数组:Directory.GetDirectories
例:string[] path = Directory.GetDirectories(@"c:\a");遍历C盘a文件夹下所有的文件夹路径,并保存到path数组里面。
DirectoryInfo
DirectoryInfo类包括4个属性,可以用来获取目录的名称、父目录等。
-
Exists:判断指定目录是否存在。如果存在,则返回true,否则返回false。
-
Name:获取目录的名称。
-
Parent“获取指定子目录的父目录。
-
Root:获取路径的根部分。
DirectoryInfo类还包括了以下9个属性,它们是从FileSystemInfo类继承而来。
-
Extension属性:获取文件扩展名部分。
-
FullName属性:获取完整目录。
-
Attributes属性:获取或设置当前目录的FileAttributes。
-
CreationTime属性:获取或设置当前目录的创建时间。
-
CreationTimeUtc属性:获取或设置当前目录的创建时间,其格式为协调通用时间。
-
LastAccessTime属性:获取或设置上次访问当前目录的时间。
-
LastAccessTimeUtc属性:获取或设置上次访问当前目录的时间,其格式为协调通用时间。
-
LastWriteTime属性:获取或设置上次写入当前目录的时间。
-
LastWriteTimeUtc属性:获取或设置上次写入当前目录的时间,其格式为协调通用时间。
-
DirectoryInfo类的实例方法说明
-
Create():创建目录。
-
GetDirectories():获取当前目录的子目录。
-
CreateSubdirectory():在指定路径中创建一个或多个子目录。
-
GetFiles():获取当前目录的文件列表。
-
Delete():删除指定的目录及其内容。
-
GetFileSystemInfos():获取当前目录的子目录和文件列表。
-
MoveTo():将指定目录及其内容移到新位置。
其中,Create()、Delete()和MoveTo()方法用来操作目录,它们依次可以用来创建、删除和移动目录。MoveTo()方法用来移动目录,它首先创建一个新目录(包括该目录的内容),然后再将被移动的目录删除。
Directory类和DirectoryInfo类的区别
- Directory是公用的静态类,是公开建立、移动和全面列举目录和子目录的静态方法。
- DirectoryInfo是实例类,是公开建立、移动和全面列举目录内和子目录的容执行个体 (Instance) 方法。
3.文件操作:File、FileInfo类
File :提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建FileStream对象。
Filelnfo :提供用于创建、复制、删除、移动和打开文件的实例方法,并协助创建FileStream 对象。
FileMode:打开文件的方式 Create CreateNew Append Open OpenOrCreate
FlleAccess: 文件访问权限 Read Write ReadWrite
创建 复制 删除 移动 文件流 写入流 读取
打开 追加 写入 读取
File类包含用于将内容写入文件的4种方法:
- WriteAllText():创建文本,将字符串写入该文件,关闭文件
- AppendAllText():将字符串附加到已有的文件
- WriteAllLines():创建文件,将字符串数组写入该文件,关闭文件
- WriteAllBytes():创建文件,将字节数组写入该文件,关闭文件
File类也包含用于从文件读取内容的3种方法:
- ReadAllText():打开文件,读取该文件中的所有文本并放入字符串中,关闭文件
- ReadAllLines():打开文件,读取该文件中的所有文本并放入字符串数组中,关闭文件
- ReadAllBytes():打开文件,读取该文件中的所有文本并放入字节数组中,关闭文件
本文作者:木影**凌翔
本文链接:https://www.cnblogs.com/MuyingBlog/p/17624874.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步