从文本文件中获取文件大小

时间:2013-02-23 02:14:52

标签: c#

尝试从列表中获取文件大小,然后将结果输出到文本文件。目前我已经能够让上半部分从文件中读取文件,检查文件是否存在,然后输出到控制台和文本文件

我是新编程“刚开始本周”。这可能是一个简单的问题,并尝试但不能让它工作

我已经尝试将它放在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);
                }

    }

提前谢谢你,如果你的代码很糟糕,你可以建议为什么不应该这样做?

1 个答案:

答案 0 :(得分:9)

您可以使用FileInfo

获取有关文件的信息(包括其大小)

e.g。

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);
            }

}