C# 笔记1 - 操作目录
最近一段时间准备花点闲散时间学学C#。坚信每门高级编程语言都差不多,不因此打算花时间从头学了。以先前学其它语言作为类比,打算简单用一下C#,然后就假装学会了。
目录
给定绝对路径path,本节完成以下操作为例:
1.获取该目录下的所有文件
2.获取该目录下的所有子目录
3.获取该目录下的所有文件及其子目录(不包含子目录中的文件)
4.获取该目录所在的根目录(所在磁盘盘符)
5.获取该目录的上层目录名(文件夹名)
6.获取该目录的上层目录的全名(绝对路径)
C# - 目录操作的相关方法(手册)
【附录】
关于文中print()的说明
part1 - C# 操作目录示例
using System; using System.IO; using static Ljc.Print; class OsPath { public static void Main() { string path = @"C:\Users\李俊才\Desktop\filePath"; string[] files = Directory.GetFiles(path); string[] dirs = Directory.GetDirectories(path); string[] files_sbupath = Directory.GetFileSystemEntries(path); string root = Directory.GetDirectoryRoot(path); DirectoryInfo parent_path = Directory.GetParent(path); print("-------------------------------------------------"); print("该目录下的所有文件:"); print(files); print("\n该目录下的所有子目录:"); print(dirs); print("\n该目录下的所有文件及其子目录(不包含子目录中的文件):"); print(files_sbupath); print("\n该目录的根目录(所在磁盘盘符)为:"); print(root); print("\n该目录的上层目录名(文件夹名)为:"); print(parent_path.Name); print("\n该目录的上层目录的全名(绝对路径)为:"); print(parent_path.FullName); print("-------------------------------------------------"); } }
运行结果
"-------------------------------------------------" "该目录下的所有文件:" ["C:\Users\李俊才\Desktop\filePath\CreateBlankExcel.java", "C:\Users\李俊才\Desktop\filePath\DCT.py", "C:\Users\李俊才\Desktop\filePath\GetAPI.class", "C:\Users\李俊才\Desktop\filePath\GetAPI.java", "C:\Users\李俊才\Desktop\filePath\painter.py", "C:\Users\李俊才\Desktop\filePath\PostAPI.java", "C:\Users\李俊才\Desktop\filePath\Untitled-1.py", "C:\Users\李俊 才\Desktop\filePath\绘图1.vsdx"] " 该目录下的所有子目录:" ["C:\Users\李俊才\Desktop\filePath\125166232", "C:\Users\李俊才\Desktop\filePath\64516216wef", "C:\Users\李俊才\Desktop\filePath\Downloads"] " 该目录下的所有文件及其子目录(不包含子目录中的文件):" ["C:\Users\李俊才\Desktop\filePath\125166232", "C:\Users\李俊才\Desktop\filePath\64516216wef", "C:\Users\李俊才\Desktop\filePath\CreateBlankExcel.java", "C:\Users\李俊才\Desktop\filePath\DCT.py", "C:\Users\李俊才\Desktop\filePath\Downloads", "C:\Users\李俊才\Desktop\filePath\GetAPI.class", "C:\Users\李俊才\Desktop\filePath\GetAPI.java", "C:\Users\李俊才\Desktop\filePath\painter.py", "C:\Users\李俊才\Desktop\filePath\PostAPI.java", "C:\Users\李俊才\Desktop\filePath\Untitled-1.py", "C:\Users\李俊才\Desktop\filePath\绘图1.vsdx"] " 该目录的根目录(所在磁盘盘符)为:" "C:\" " 该目录的上层目录名(文件夹名)为:" "Desktop" " 该目录的上层目录的全名(绝对路径)为:" "C:\Users\李俊才\Desktop" "-------------------------------------------------"
part2 - C# 目录操作的相关方法(手册)
方法 | 功能 | 类 | 命名空间 |
CreateDirectory | 在指定路径中创建所有目录和子目录,除非它们已经存在 | Directory | System.IO |
Delete | 从指定路径删除空目录 | Directory | System.IO |
EnumerateDirectories | 返回满足指定条件的目录完整名称的可枚举集合 | Directory | System.IO |
EnumerateFiles | 返回满足指定条件的完整文件名的可枚举集合 | Directory | System.IO |
EnumerateFileSystemEntries | 返回满足指定条件的文件系统项的可枚举集合 | Directory | System.IO |
Exists | 确定给定路径是否引用磁盘上的现有目录 | Directory | System.IO |
GetCreationTime | 获取目录的创建日期和时间 | Directory | System.IO |
GetCreationTimeUtc | 获取目录创建的日期和时间,其格式为协调通用时 (UTC) | Directory | System.IO |
GetCurrentDirectory | 获取应用程序的当前工作目录 | Directory | System.IO |
GetDirectories | 返回满足指定条件的子目录的名称 | Directory | System.IO |
GetDirectoryRoot | 返回指定路径的卷信息、根信息或两者同时返回 | Directory | System.IO |
GetFiles | 返回满足指定条件的文件的名称 | Directory | System.IO |
GetFileSystemEntries | 返回满足指定条件的所有文件和子目录的名称 | Directory | System.IO |
GetLastAccessTime | 返回上次访问指定文件或目录的日期和时间 | Directory | System.IO |
GetLastAccessTimeUtc | 返回上次访问指定文件或目录的日期和时间,其格式为协调通用时 (UTC) | Directory | System.IO |
GetLastWriteTime | 返回上次写入指定文件或目录的日期和时间 | Directory | System.IO |
GetLastWriteTimeUtc | 返回上次写入指定文件或目录的日期和时间,其格式为协调通用时 (UTC) | Directory | System.IO |
GetLogicalDrives | 检索此计算机上格式为“:\”的逻辑驱动器的名称 | Directory | System.IO |
GetParent | 检索指定路径的父目录,包括绝对路径和相对路径 | Directory | System.IO |
Move | 将文件或目录及其内容移到新位置 | Directory | System.IO |
SetCreationTime | 为指定的文件或目录设置创建日期和时间 | Directory | System.IO |
SetCreationTimeUtc | 设置指定文件或目录的创建日期和时间,其格式为协调通用时 (UTC) | Directory | System.IO |
SetCurrentDirectory | 将应用程序的当前工作目录设置为指定的目录 | Directory | System.IO |
SetLastAccessTime | 设置上次访问指定文件或目录的日期和时间 | Directory | System.IO |
SetLastAccessTimeUtc | 设置上次访问指定文件或目录的日期和时间,其格式为协调通用时 (UTC) | Directory | System.IO |
SetLastWriteTime | 设置上次写入目录的日期和时间 | Directory | System.IO |
SetLastWriteTimeUtc | 设置上次写入某个目录的日期和时间,其格式为协调通用时 (UTC) | Directory | System.IO |
【关于文中print()的说明】
在C#中一般使用Console.WriteLine()
函数输出到控制台,它在使用时和很多语言一样有些不尽如人意的地方。首先是写起来太长,麻烦。然后它无法很直观地展示某些特定地数据结构,
- 比如我们用其输出一个String Array:
System.String[]
- 或者输出一个ArrayList:
System.Collections.ArrayList
无法看到内部地元素结构。
如果要看到内部元素则需要使用如for
、foreach
等语句进行遍历打印之。但如果内层元素还存在数组、数组列表、字典、队列等等类型的元素,则还需要进行迭代使用循环遍历。这都将大大降低开发效率。
而在开发和调试时:
- 我们实际像看到的更多的应该比如这样子(写过python人都习以为常的样子):
["1","2","3","A","B","C","D"]
- 或者这样子:
[["1",2,'A',"WKJ"],[1,6,9,7,10], [6,7,4,"@"],["HELLOW","WORLD"]]
- 又或者对于散列表结构,则呈现出如这样子:
{"张":"三", "李":"四", "王":"五", "赵":"六", "钱":"七" }
等等。。
现对于C#中的基础结构在类中重载了很多个不同类型的print()方法。如char、String、int、double、float、long、short、uint、bool等等。也可以使用一维数组Array,或者包含以上以上结构的一维数组列表ArrayList和任意多维ArrayList。
下文用到实现一个类似于python中的print()方法: