Хорошо, я быстро взглянул на статью, на которую вы ссылались, и вот некоторые комментарии, которые могут помочь.
Сначала давайте взглянем на
private string GetFileSize(double byteCount)
{
string size = "0 Bytes";
if (byteCount >= 1073741824.0)
size = String.Format("{0:##.##}", byteCount / 1073741824.0) + " GB";
else if (byteCount >= 1048576.0)
//etc...
return size;
}
Что это должно сделатьпохоже, что-то более похожее на это
private string GetFileSize(double byteCount)
{
string size = "0 Bytes";
if (byteCount > = 1073741824.0)
{
size = String.Format("{0:##.##}", byteCount / 1073741824.0) + " GB";
}
else if (byteCount >= 1048576.0)
{
//do something else in here
}
return size;
}
Вам не нужно использовать фигурные скобки в операторе if / else для разделения ваших блоков кода для выполнения, если это только одна строка, я включил здесьдля ясности.Компилятор C # будет ассоциировать следующую исполняемую строку кода после и если или еще с этим if или else, если только вы не используете {}, чтобы указать блок или завершить саму строку if или else с помощью ";"
Следующая проблема, с которой вы столкнулись, связана со ссылкой textFile.Text в цикле foreach.Скорее всего, это элемент управления Textbox на форме в примере.Параметр, который вы вводите, является фильтром для типа файлов, которые вы ищете.Таким образом, вы, скорее всего, не имеете текстовое поле в форме с именем textFile.
Редактировать: Нет команды одной строки для рекурсивного получения списка всех файлов в структуре каталогов, встроенной в .NETфреймворк.Таким образом, у вас есть метод ниже, чтобы сделать это для вас.То, как вы могли бы использовать это, чтобы получить единый список всех путей, было бы следующим:
List<FileInfo> DirSearch(string sDir)
{
List<FileInfo> filesList = new List<FileInfo>();
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d, txtFile.Text))
{
fileList.Add(new FileInfo(f));
}
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
return fileList;
}
Теперь вы можете распечатать детали каждого из этих файлов примерно так:
foreach (FileInfo fi in new DirSearch("c:\"))
{
console.Writeline(String.Format("Filename: {0} Size: {1}", fi.Name, fi.Length));
}