【发布时间】:2020-11-13 16:53:29
【问题描述】:
我有以下代码,我试图枚举共享驱动器上的文件,收集每个文件的属性,然后返回该集合中的每个条目。
Visual Studio 为我提供“CS0161:'Program.EnumerateYourFiles(string)':并非所有代码路径都返回值。”当我将鼠标悬停在 EnumerateYourFiles 方法上时出错。我猜这与我试图返回的“l”变量超出范围有关。如何将“l”变量放入作用域,以便它为函数返回?
using System;
using System.IO;
using System.Collections.Generic;
namespace FileShareMachine
{
public class Program
{
static void Main(string[] args)
{
Console.WriteLine(EnumerateYourFiles(@"E:\"));
}
public static object EnumerateYourFiles(string pathToSearch)
{
string filePath = pathToSearch;
DirectoryInfo currentParentFileList = new DirectoryInfo(filePath);
DirectoryInfo[] listOfSubDirectories = currentParentFileList.GetDirectories();
List<string> listOfAllFiles = new System.Collections.Generic.List<string>();
foreach (var parentPath in listOfSubDirectories)
{
string pathForEnumeration = parentPath.ToString();
DirectoryInfo individualSubFolder = new DirectoryInfo(pathForEnumeration);
try
{
foreach (var eachFile in individualSubFolder.EnumerateFiles("*", SearchOption.AllDirectories))
{
string individualPaths = eachFile.FullName.ToString();
string lastAccessed = eachFile.LastAccessTime.ToString();
string fileSize = eachFile.Length.ToString();
string creationTime = eachFile.CreationTime.ToString();
string lastWriteTime = eachFile.LastWriteTime.ToString();
string fileDirectory = eachFile.Directory.ToString();
//The following works like a dream. This is how you write to a file. You need an array or list
listOfAllFiles.Add(individualPaths);
listOfAllFiles.Add(fileSize);
listOfAllFiles.Add(fileDirectory);
listOfAllFiles.Add(creationTime);
listOfAllFiles.Add(lastAccessed);
listOfAllFiles.Add(lastWriteTime);
}
}
catch (System.UnauthorizedAccessException)
{
bool errorThrown = true;
if (errorThrown)
{
Console.WriteLine("The following path had an access error {0}", individualSubFolder);
continue;
}
else
{
continue;
}
}
}
//return listOfSubDirectories;
foreach(object l in listOfAllFiles)
{
return l;
}
}
}
}
【问题讨论】:
标签: c# methods foreach return-value