3

リストからファイル サイズを取得し、結果をテキスト ファイルに出力しようとしています。現在、ファイルが存在するかどうかを確認してからコンソールとテキストファイルに出力するファイルからの読み取りの前半の作業を取得できました

私は「今週始めたばかり」の新しいプログラミングです。これは簡単な質問かもしれませんが、試してみましたが、まったく機能しません

これを foreach ループの中に入れてパスを読み取ろうとしましたが、うまくいきません。

        DirectoryInfo di = new DirectoryInfo(path);
        FileInfo[] fiArr = di.GetFiles();
        foreach (FileInfo f in fiArr)

これまでの私のコード

    static void Main(string[] args)
    {

        string[] lines = System.IO.File.ReadAllLines(@"C:\Locations2.txt");
        foreach (string path in lines)
            if (File.Exists(path))
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true))
                {
                    file.WriteLine("File found" + "\t" + path);
                    Console.WriteLine("File found" + "\t" + path);
                }


            else
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true))
                {
                    file.WriteLine("Does not Exist" + "\t" + path);
                    Console.WriteLine("Does not Exist" + "\t" + path);
                }

    }

事前に感謝します。これが悪いコードである場合、なぜこのようにすべきではないのかアドバイスできますか?

4

1 に答える 1

9

FileInfoクラスを使用して、サイズを含むファイルに関する情報を取得できます

例えば

var fileName = @"C:\Locations2.txt";
FileInfo fi = new FileInfo(fileName);
var size = fi.Length;
Console.WriteLine("File Size in Bytes: {0}", size);

ループ内に配置した上記のコードは正しい概念ですが、間違った実装です。開きたいファイル名がわかっている場合は、DirectoryInfo.GetFilesルートをたどる必要はありません。FileInfoに直接アクセスするだけです。

したがって、コードは次のようになります。

static void Main(string[] args)
{

    string[] lines = System.IO.File.ReadAllLines(@"C:\Locations2.txt");
    foreach (string path in lines)
        if (File.Exists(path))
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true))
            {
                file.WriteLine("File found" + "\t" + path);
                Console.WriteLine("File found" + "\t" + path);

                FileInfo fi = new FileInfo(path);
                var size = fi.Length;
                file.WriteLine("File Size in Bytes: {0}", size);
                Console.WriteLine("File Size in Bytes: {0}", size);
            }


        else
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true))
            {
                file.WriteLine("Does not Exist" + "\t" + path);
                Console.WriteLine("Does not Exist" + "\t" + path);
            }

}
于 2013-02-23T02:19:54.730 に答える