0

共有の特別なフォルダー (仮想フォルダー) 内のすべてのファイルを検索する方法を探しています。Desktopたとえば、共有フォルダーがあり、すべてのユーザーのパブリックとDesktopプライベートがありDesktopます。ファイル エクスプローラーで移動するとDesktop、両方のデスクトップの内容が結合されていることがわかります。


例:

すべての共有フォルダ:

dir C:\Users\Public\Desktop
Testfile1
Testfile2

現在のユーザーのフォルダー:

dir C:\Users\usera\Desktop
Testfile3
Testfile4

今、私はトラフをループしてTestfile1まですべてのファイルを取得したいTestfile4C:\Users\usera\Desktop

マージされた両方のディレクトリのファイルのリストを取得する方法を知っている人はいますか? また、デスクトップだけでなく、同じように動作する他のフォルダーもあります。


擬似コード:

arrayDesktop = FunctionThatGetsAllFilesFrom(@"C:\Usera\Desktop");
foreach (var file in arrayDesktop)
{
    Console.WriteLine(file);
}

これで印刷されるはずです

Testfile1
Testfile2
Testfile3
Testfile4
4

3 に答える 3

0

これはテスト済みのコードではないため、エラーは許されますが、開始するには十分なはずです。

foreach (string dir in Directory.GetDirectories(@"c:\Users"))
{
    string fullDir = Path.Combine(dir, "Desktop");

    if (Directory.Exists(fullDir))
    {
        foreach (string file in Directory.GetFiles(fullDir))
        {
            Console.WriteLine(file);
        }
    }
}

ただし、これを管理者として実行していない限り、ディレクトリを読み取れないなどのセキュリティの問題が発生する可能性があります。この例では、System.Net.NetworkCredentialオブジェクトが必要になり、管理者アカウントをローカル キャッシュに保存します。このようなものです。

NetworkCredential credential = new NetworkCredential(username, password, domain);
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(@"\\computer-uri"), "Basic", credential);
于 2012-10-23T14:16:17.660 に答える
0

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)とを使用Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory)して、デスクトップとパブリックのファイルをそれぞれ取得します。

その他の仮想フォルダについては、ドキュメントを参照してください。ただし、すべてのファイルを自分でマージする必要があります。

于 2012-10-23T14:13:43.747 に答える
-1

これらは、ファイル システム上の個別のフォルダーです。Windows は、両方を組み合わせてデスクトップに表示します。両方のフォルダーからすべてのファイルを取得し、それらを 1 つのリストに結合する必要があります。

を使用して、特定のフォルダー内のファイルのリストを取得できますDirectory.GetFiles

両方のフォルダーからファイルを取得したら、それらを LinqConcat拡張メソッドと組み合わせることができます。

于 2012-10-23T14:09:10.207 に答える