所以相对简单..应该可以将某些内容拼凑在一起,但是我被困在相对目录路径中并找到实际的最新文件。 我发现了 然后我意识到我不确定如何在当前类的下两个目录中引用该文件。 此外,GetFiles上不存在“ .OrderByDecending”。 这是目录布局...我正在使用DATASuburbInitialiser: 如何在SuburbCSV目录中相对(在发布模式下也可以)获得最新的csv文件? 我将使用resx文件,但要注意的是,您必须停止应用程序及其需要保持运行状态的Web应用程序,并且我需要不时更新郊区。 答案 0 :(得分:1) GetFiles()返回一个数组,当您捕获了所有要查找的文件后,肯定可以使用 运行时中文件夹的位置与当前类无关。它与应用从何处执行有关。这很可能是bin文件夹,您可以尝试使用相对路径,例如 答案 1 :(得分:0) 我要遵循“停止讲话,告诉我您的代码”一词,所以这是我不言自明的代码。 答案 2 :(得分:0) 您需要在.cs文件中添加使用“ var directory = new DirectoryInfo("C:\\MyDirectory");
var latestFile = directory.GetFiles().OrderByDescending(f => f.LastWriteTime).First();
3 个答案:
OrderByDescending
。您应该在课堂上添加对System.Linq
的引用,并使用directory.GetFiles(*.csv)
之类的搜索模式仅将CSV文件作为目标,尽管我会选择EnumerateFiles
以便不收集项目数组你无意做任何事情。..\..\SUBURB.Initialisations\SuburbCSV
,并根据需要添加“ .. \”和其他父文件夹。一旦确定拥有一个在某些子文件夹中包含文件的父目录,并且您真的不在乎查找特定的子文件夹,则也可以利用SearchOption.AllDirectories
。但是,我只会在测试中这样做。class Program
{
static List<FileInfo> GetFiles(string path, bool recursive = false)
{
List<FileInfo> files = new List<FileInfo>();
DirectoryInfo di = new DirectoryInfo(path);
files.AddRange(di.GetFiles());
if (recursive)
{
var directories = di.GetDirectories();
if(directories.Length > 0)
foreach(var dir in directories)
files.AddRange(GetFiles(dir.FullName, true));
}
return files;
}
static List<string> OrderByCreation(List<FileInfo> files, bool descend = false)
{
IOrderedEnumerable<FileInfo> orderedfiles = null;
orderedfiles = descend
? files.OrderByDescending(item => item.CreationTime)
: files.OrderBy(item => item.CreationTime);
return orderedfiles.Select(item => item.FullName).ToList();
}
static void Main(string[] args)
{
var list = GetFiles(@"C:\MyDirectory", true);
var files = OrderByCreation(list, true);
}
}
using System.Linq;
”。