Unity C# 基本レビュー 23 - IO、ディレクトリおよびファイル操作、再帰ディレクトリ、パス処理クラスの簡単な紹介 (P425-P430)

1つ、

1. IO 名前空間には、データ ストリームおよびファイル内のデータの読み取りと書き込みを容易にするクラスが含まれています。

2. IO 名前空間でのファイルおよびディレクトリの操作に使用されるクラス

二、

System.IO 名前空間では、ディレクトリを操作するための 3 つのクラスが提供されます。

ディレクトリ静的クラスは、ディレクトリとサブディレクトリを作成、移動、削除するための静的メソッドを提供します。

DirectoryInfo は、ディレクトリとサブディレクトリを作成、移動、削除するためのインスタンス メソッドを提供します。

Path 静的クラスのメンバーを使用すると、ユーザーはファイルまたはディレクトリのパス情報の String インスタンスに対して一般的な静的操作メソッドを迅速かつ簡単に実行できます。

File は、ファイルを作成、コピー、削除、移動、開くための静的メソッドを提供し、FileStream の作成を支援します。FileInfo クラスはインスタンス メソッドを提供します。
Directory は、ディレクトリとサブディレクトリを作成、移動、列挙するための静的メソッドを提供します。
Directorylnfo クラスはインスタンス メソッドを提供します
Filelnfo は、ファイルの作成、コピー、削除、移動、および開くためのインスタンス メソッドを提供し、FileStream の作成を支援します。File クラスは静的メソッドを提供します。
Directorylnfo は、ディレクトリとサブディレクトリを作成、移動、列挙するためのインスタンス化メソッドを提供します。Directory
クラスは静的メソッドを提供します。

三つ、

1. IO は ROM と他の永続ストレージ メディア間のブリッジです。IO は IO ストリームのセットアップに使用され、データは IO ストリームを通じて送信されます。

2. Info を持つものはすべてオブジェクトとして扱われます。Info がない場合は、クラス名.メソッドが処理に使用されます。結果は同じですが、個人の使用習慣によっては、静的クラスを使用するたびにパスを追加する必要がありますが、Info を含むオブジェクトの作成は 1 回追加するだけで済みます。

using System;
using System.IO;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            //OpDirectory();

            //OpFile();

            //获取目录下的所有子目录
            //ShowSubDirs(@"C:\Program Files");

            //获取目录下的所有文件
            //ShowSubFiles(@"C:\Program Files\7-Zip");

            //ShowAll(@"C:\Program Files\7-Zip");

            FilePath();
        }

        public static void FilePath() 
        {
            //拿到文件所在目录
            Console.WriteLine(Path.GetDirectoryName(@"C:\mydir\1.1.txt"));
            //拿到带后缀名的文件
            Console.WriteLine(Path.GetFileName(@"C:\mydir\1.1.txt"));
            //拿到不带后缀名的文件
            Console.WriteLine(Path.GetFileNameWithoutExtension(@"C:\mydir\1.1.txt"));
            //拿到文件后缀名
            Console.WriteLine(Path.GetExtension(@"C:\mydir\1.1.txt"));
            //创建临时文件
            Console.WriteLine(Path.GetTempFileName());
            string path1 = @"test";
            string path2 = "role.sav";
            //不需要自己添加分隔符
            Console.WriteLine(Path.Combine(path1, path2));

        }

        //File方法  文件的操作
        public static void OpFile() 
        {
            //一
            //Directory.CreateDirectory(@"C:\aaa");

            *覆盖式的创建
            //File.Create(@"C:\aaa\1.txt");

            //为了防止文件覆盖,可以先判断文件是否存在
            //if (File.Exists(@"C:\aaa\1.txt") == false) 
            //{
            //    File.Create(@"C:\aaa\1.txt");
            //}

            //二、用对象的方式更加方便
            FileInfo file = new FileInfo(@"C:\aaa\1.txt");
            if (file.Exists == false) 
            {
                file.Create();
            }
            //永久删除文件
            file.Delete();
        }


        //Directory方法  目录的操作
        public static void OpDirectory() 
        {
            /*静态类*/
            //创建一个目录,*如果有重名则会置之不理
            Directory.CreateDirectory(@"C:\mydir");
            Console.WriteLine(Directory.Exists(@"C:\mydir"));
            //删除目录
            Directory.Delete(@"C:\mydir");
            //删除目录(包括目录下面的子目录和文件)
            Directory.Delete(@"C:\mydir", true);

            /*用对象的方式,与上边是一样,但是更加方便一下*/
            DirectoryInfo dir = new DirectoryInfo(@"C:\mydir");
            dir.Create();
            dir.Delete(true);
        }

        //获得所有子目录
        public static void ShowSubDirs(String path) 
        {
            //可以获得所有子目录
            string[] subDirs = Directory.GetDirectories(path);
            foreach (var item in subDirs)
            {
                Console.WriteLine(item);
            }
        }

        //获得目录下的所有文件
        public static void ShowSubFiles(String path) 
        {
            DirectoryInfo myDir = new DirectoryInfo(path);
            //非静态类得到的是数据的实体而不是String
            FileInfo[] files = myDir.GetFiles();
            foreach (var item in files)
            {
                //不带路径
                //Console.WriteLine(item.Name);
                //带路径
                Console.WriteLine(item.FullName);
            }
        }

        /// <summary>
        /// 查看某个目录中的子文件和子目录
        /// </summary>
        /// <param name="path">要查看的路径</param>
        public static void ShowAll(String path) 
        {
            //先查看目录
            foreach (var item in Directory.GetDirectories(path)) 
            {
                Console.WriteLine(item);
                ShowAll(item);
            }

            //查看所有的子文件
            foreach (var item in Directory.GetFiles(path))
            {
                Console.WriteLine(item);
            }
        }
    }
}

おすすめ

転載: blog.csdn.net/weixin_46711336/article/details/125279450