0

フォルダー内のすべてのファイル名を受け取り、リストに保存する方法を知りたいです。

私は投稿を探していましたが、これは私がこれまでに持っているものです:

private void btnSort_Click(object sender, EventArgs e)
{
        //if (Directory.Exists(Path)) 
        foreach (string file in Directory.EnumerateFiles(FilePath))
        {
            NoOfFiles++;
            FileNames.Add(file);
            //Should implement adding something that converts lower case letters to upper.
            Directory.CreateDirectory(FilePath + "\\" + file[0]);
        }
}

RndFile.txtある程度は機能しますが、ファイルパス(Eg)ではなく、ファイルの最初の文字(Eg)で名前を付けたディレクトリを作成したいと思いますC:\\something\\something\\RndFile.txt

したがって、その情報をリスト内に保存したいと思います。

ただし、この情報だけを受け取る方法や、不要な部分を削除する方法はありません。

ありがとう!シヴァム

PS 興味のある方は、これは A レベル コンピューティング プロジェクト用です。最初の文字に従ってファイルをソートする、単純で不適切にコーディングされたプログラムを作成しています。これでいいのかどうか、先生に聞くのがもったいないです。

4

5 に答える 5

0

DirectoryInfoの代わりに使用Directory:

DirectoryInfo dir = new DirectoryInfo("c:");
FileInfo[] files = dir.GetFiles();
于 2013-04-13T10:03:42.217 に答える
0

あなたの問題を正しく理解したかどうかわかりません。

Path 名前空間には、いくつかの便利な関数が含まれています。私はあなたが欲しいと思います

Path.GetFileNameWithoutExtension()-これでファイル名だけが得られます。次に、それを文字列として扱い、

Substring(0,1)最初の文字を取得します。

于 2013-04-13T10:04:21.497 に答える
0

System.IO の FileInfo オブジェクトは、Name プロパティによってファイル名を指定します。

     private void btnSort_Click(object sender, EventArgs e)
    {
            DirectoryInfo di = new DirectoryInfo("path");
            FileInfo[] fi = di.GetFiles();
            foreach (FileInfo item in fi)
            {
                string filename = item.Name;
                string fullname = item.FullName;
            }
     }
于 2013-04-13T10:05:28.897 に答える
0
private static string[] GetFileNames(string path, string filter)
    {
        string[] files = Directory.GetFiles(path, filter);
        for (int i = 0; i < files.Length; i++)
        {
            files[i] = Path.GetFileName(files[i]);

        }
        return files;
    }

ページ読み込み時にこの関数を呼び出す

string[] myFiles = GetFileNames("D:\\folderName", "*.txt");

myFiles配列には、フォルダー内に保存されているすべてのファイルの名前が含まれるようになりました。
ファイル名を並べ替えるには、配列ファイルを並べ替えるだけです

Array.Sort(myFiles);
于 2013-04-13T10:11:03.507 に答える
0

あなたの仕事は非常に正しいです。クラス Pathによって提供される機能をループに追加するだけです

private void btnSort_Click(object sender, EventArgs e)
{
    foreach (string file in Directory.EnumerateFiles(FilePath))
    {
        string fileName = Path.GetFileName(file);
        string newDir = Path.Combine(FilePath, fileName[0]);
        if(!Directory.Exists(newDir))
             Directory.CreateDirectory(newDir);

        // If you still need to store the filenames in a list you could add
        FileNames.Add(fileName);
        // but no need to keep a counter variable, you could Always get that value
        // using FileNames.Count after the loop ends...

    }
}
于 2013-04-13T10:11:31.383 に答える