C# 笔记1 - 操作目录

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在指定路径中创建所有目录和子目录,除非它们已经存在DirectorySystem.IO
Delete从指定路径删除空目录DirectorySystem.IO
EnumerateDirectories返回满足指定条件的目录完整名称的可枚举集合DirectorySystem.IO
EnumerateFiles返回满足指定条件的完整文件名的可枚举集合DirectorySystem.IO
EnumerateFileSystemEntries返回满足指定条件的文件系统项的可枚举集合DirectorySystem.IO
Exists确定给定路径是否引用磁盘上的现有目录DirectorySystem.IO
GetCreationTime获取目录的创建日期和时间DirectorySystem.IO
GetCreationTimeUtc获取目录创建的日期和时间,其格式为协调通用时 (UTC)DirectorySystem.IO
GetCurrentDirectory获取应用程序的当前工作目录DirectorySystem.IO
GetDirectories返回满足指定条件的子目录的名称DirectorySystem.IO
GetDirectoryRoot返回指定路径的卷信息、根信息或两者同时返回DirectorySystem.IO
GetFiles返回满足指定条件的文件的名称DirectorySystem.IO
GetFileSystemEntries返回满足指定条件的所有文件和子目录的名称DirectorySystem.IO
GetLastAccessTime返回上次访问指定文件或目录的日期和时间DirectorySystem.IO
GetLastAccessTimeUtc返回上次访问指定文件或目录的日期和时间,其格式为协调通用时 (UTC)DirectorySystem.IO
GetLastWriteTime返回上次写入指定文件或目录的日期和时间DirectorySystem.IO
GetLastWriteTimeUtc返回上次写入指定文件或目录的日期和时间,其格式为协调通用时 (UTC)DirectorySystem.IO
GetLogicalDrives检索此计算机上格式为“:\”的逻辑驱动器的名称DirectorySystem.IO
GetParent检索指定路径的父目录,包括绝对路径和相对路径DirectorySystem.IO
Move将文件或目录及其内容移到新位置DirectorySystem.IO
SetCreationTime为指定的文件或目录设置创建日期和时间DirectorySystem.IO
SetCreationTimeUtc设置指定文件或目录的创建日期和时间,其格式为协调通用时 (UTC)DirectorySystem.IO
SetCurrentDirectory将应用程序的当前工作目录设置为指定的目录DirectorySystem.IO
SetLastAccessTime设置上次访问指定文件或目录的日期和时间DirectorySystem.IO
SetLastAccessTimeUtc设置上次访问指定文件或目录的日期和时间,其格式为协调通用时 (UTC)DirectorySystem.IO
SetLastWriteTime设置上次写入目录的日期和时间DirectorySystem.IO
SetLastWriteTimeUtc设置上次写入某个目录的日期和时间,其格式为协调通用时 (UTC)DirectorySystem.IO

【关于文中print()的说明】

在C#中一般使用Console.WriteLine()函数输出到控制台,它在使用时和很多语言一样有些不尽如人意的地方。首先是写起来太长,麻烦。然后它无法很直观地展示某些特定地数据结构,

  • 比如我们用其输出一个String Array:
System.String[]
  • 或者输出一个ArrayList:
System.Collections.ArrayList

无法看到内部地元素结构
如果要看到内部元素则需要使用如forforeach等语句进行遍历打印之。但如果内层元素还存在数组、数组列表、字典、队列等等类型的元素,则还需要进行迭代使用循环遍历。这都将大大降低开发效率。
而在开发和调试时:

  • 我们实际像看到的更多的应该比如这样子(写过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()方法:



版权声明:本文为qq_28550263原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。