1

すべてのファイルとフォルダー、およびそれらのフォルダー内のファイルへの方法を探しています。

例として。

私が持っている場合

- Root
+ file1
+ file2
-- Directory
-+ file1
-+ file2
---Directory
--+ file1
--+ file2

プログラム内のこれらのファイルのそれぞれを出力できるようにしたいので、次のようになります。

root/file1
root/file2
root/Directory/file1
root/Directory/file2
root/Directory/Directory/file1
root/Directory/Directory/file2

フォルダ階層に合わせて。

とにかくこれを行うことはありますか?

ありがとう

4

4 に答える 4

2

次の例は、まさにあなたが望むことを行います:-

http://www.dotnetperls.com/recursive-find-files

于 2011-08-24T11:27:30.220 に答える
1

これらの詳細を取得するには、System.IO 内で DirectoryInfo クラス、FileInfo クラスを使用します。

 public void PrintAllFiles()
    {
        DirectoryInfo obj = new DirectoryInfo("E:\\");
        foreach (var k in obj.GetFiles())
        {
            Console.WriteLine(k.FullName);
        }
    }
于 2011-08-24T11:23:19.517 に答える
1

リフティングの一部にLinqを使用する

var di=new DirectoryInfo(folderPath);
var files=di.GetFiles("*",SearchOption.AllDirectories).Select(f=>f.FullName.Substring(di.FullName.Length+1));

完全なパスを取得するには、部分文字列を見逃してください。または、ルート オブジェクトのフォルダ名だけが必要な場合 (たとえば、ディレクトリとして c:\users\bob\fish を実行し、fish\foldername だけが必要な場合は、次のようにします。.

var di=new DirectoryInfo(folderPath);
var basePath=Path.GetDirectoryName(folderPath);
var files=di.GetFiles("*",SearchOptions.AllDirectorys).Select(f=>f.FullName.Substring(basePth.Length+1));

ステートメントの最後に余分なタグを付ける場合は.Select(f=>f.Replate(@"\","/"))、\ の代わりに / をパス セパレータとして使用できます。

于 2011-08-24T11:28:00.040 に答える
0

ファイルとフルパス名の配列を返し、その配列を出力する System.IO.Directory.GetFiles(..,..,System.IO.SearchOption.AllDirectories) を使用できます。並べ替えが必要な場合は、ディレクトリを再帰的にループし、代わりに各ディレクトリで System.IO.Directory.GetFiles(..,..,System.IO.SearchOption.TopDirectoryOnly) を使用できます。

于 2011-08-24T11:22:46.397 に答える