C# 从文本文件获取文件大小
尝试从列表中获取文件大小,然后将结果输出到文本文件。目前,我已经能够从文件读取的前半部分工作,检查文件是否存在,然后输出到控制台和文本文件 我是“本周刚开始”的新编程人员。这可能是一个很容易的问题,而且已经尝试过了,但还不能完全实现 我试着把这个放在foreach循环中,并尝试读取路径,但它不起作用C# 从文本文件获取文件大小,c#,C#,尝试从列表中获取文件大小,然后将结果输出到文本文件。目前,我已经能够从文件读取的前半部分工作,检查文件是否存在,然后输出到控制台和文本文件 我是“本周刚开始”的新编程人员。这可能是一个很容易的问题,而且已经尝试过了,但还不能完全实现 我试着把这个放在foreach循环中,并尝试读取路径,但它不起作用 DirectoryInfo di = new DirectoryInfo(path); FileInfo[] fiArr = di.GetFiles();
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);
}
}
提前谢谢,如果这是一个糟糕的代码,你能告诉我为什么不应该这样做吗?你可以通过
FileInfo
类获得关于文件的信息,包括文件大小
e、 g
上面放在循环中的代码是正确的概念,只是错误的实现。如果知道要打开的文件名,则无需通过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);
}
}
提示:将文件创建/打开放在for循环之外……这将只找到该文件名。在C:\Locations2.txt中有一个位置列表,需要传递这些位置来查找这些位置的文件大小,例如,在文件Locations2.txt中的新行上,它会有“C:\1.txt,C:\2.txt,C:\3.txt”我不明白你的意思。你能给我们一些Locations2.txt里面的东西的样本吗?给我们看一些输出?请用这些附加信息修改您的问题。“c:\1.txt,c:\2.txt,c:\3.txt”新行上的每个路径我修改了我的答案,使之更明确。请参阅我添加到
if(FileExists)
分支的4行。给定路径
,它会创建一个文件信息
,然后获取长度并将其记录到文件和控制台。非常感谢您为我解决了这个问题。我知道这会很简单。
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);
}
}