尝试从列表中获取文件大小,然后将结果输出到文本文件。目前我已经能够让上半部分从文件中读取文件,检查文件是否存在,然后输出到控制台和文本文件
我是新编程“刚开始本周”。这可能是一个简单的问题,并尝试但不能让它工作
我已经尝试将它放在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);
}
}
提前谢谢你,如果你的代码很糟糕,你可以建议为什么不应该这样做?
答案 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);
}
}