1

ファイル構造を検索してリストを作成しようとすると問題が発生します。これを実行して実行する基本的な c# コンソール プログラムを作成しようとしていました。

私の構造は次のように整理されています。

マイ ネットワーク \
X1 \ ユーザー \ (多数のユーザー フォルダ) \ 特定のサブ フォルダを検索する \ このサブ フォルダ内の任意のフォルダのテキスト ファイルにリストを作成する

したがって、すべてのユーザーフォルダーを検索してフォルダーをチェックできるようにする必要があります (これは毎回同じです) 次に、そのサブフォルダー内で見つかったフォルダーのリストを次の形式で作成します

username (ユーザーフォルダーの名前) >> 特定のフォルダー内のフォルダーの名前。

ファイル構造内で検索して何かを試みなければならなかったので、これはひどく空白になりました。

** * ** * ** * ** * ****編集!!!!!

情報とリンクをありがとう。現在これに取り組んでいますが、これが理にかなっていてうまくいくかどうか疑問に思っています。ただ台無しにならないもののように見えることを確認する前に、ただテストしたくありません。

            TextWriter outputText = new StreamWriter(@"C:\FileList.txt", true);
        outputText.WriteLine("Starting scan through user folder");
        string path = @"\\X1\users";
        string subFolder = "^^ DO NOT USE - MY DOCS - BACKUP ^^";
        string [] user_folders = Directory.GetDirectories(path);

        foreach (var folder in user_folders)
        {
            string checkDirectory = folder + "\\" + subFolder;

            if (Directory.Exists(checkDirectory) == true)
            {
                string [] inner_folders = Directory.GetDirectories(checkDirectory);
                foreach (var folder2 in inner_folders)
                {
                    outputText.WriteLine(folder2);
                }
            }
        }
        outputText.WriteLine("Finishing scan through user folder");
        outputText.Close();

修正され、機能しています!!!! .GetFiles ではなく .GetDirectories にするために、文字列 [] 行を変更する必要がありました!!

4

2 に答える 2

2

バリCが述べたように、ディレクトリクラスはこのクラスの友達になります。次の例で始めることができます。

差出人:http ://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/3ea19b83-b831-4f30-9377-bc1588b94d23/

//Obviously you'll need to define the correct path.
string path = @"My Network\X1\Users\(many many user folders)\Search for a specific sub folder \";

// Will Retrieve count of all files in directry and sub directries
int fileCount = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Length; 

// Will Retrieve count of all files in directry but not sub directries
int fileCount = Directory.GetFiles(path, "*.*", SearchOption.TopDirectory).Length; 

// Will Retrieve count of files .txt extensions in directry and sub directries
int fileCount = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories).Length; 

/ Users /フォルダーで特定のユーザーまたは特定の条件を検索する必要がある場合は、次のようにすることができます。

string path = @"PATH_TO_USERS_DIRECTORY";
string [] user_folders = Directory.GetFiles(path);
foreach(var folder in user_folders)
{
    if folder == "MyFolder";
        Process(folder);  //Search the directory here.
}
于 2012-12-10T15:39:21.237 に答える
1

次の実装を試してください。これはコンソールに書き込むだけです:

const string root = "<<your root path>>";
const string directoryToLookFor = "<<the folder name you are looking for>>";
foreach (var directory in Directory.EnumerateDirectories(root, "*.*", SearchOption.TopDirectoryOnly))
{
    var foundDirectory = Directory.EnumerateDirectories(directory, directoryToLookFor, SearchOption.TopDirectoryOnly).FirstOrDefault();
    if (!String.IsNullOrEmpty(foundDirectory))
    {
        var filesInside = Directory.GetFiles(foundDirectory);
        foreach (var file in filesInside)
        {
            Console.WriteLine(file);
        }
    }
}

または、次のようにすることもできます。

foreach (var foundDirectory in Directory.EnumerateDirectories(root, directoryToLookFor, SearchOption.AllDirectories))
{
    var filesInside = Directory.GetFiles(foundDirectory);
    foreach (var file in filesInside)
    {
        Console.WriteLine(file);
    }
}

ユーザーのフォルダーを反復処理する必要なく、すべてのサブディレクトリ内で検索します。

于 2012-12-10T15:47:05.623 に答える