0

所以相对简单..应该能够拼凑一些东西,但我被困在相对目录路径上并找到实际的最新文件。

我找到了这个

 var directory = new DirectoryInfo("C:\\MyDirectory");
 var latestFile = directory.GetFiles().OrderByDescending(f => f.LastWriteTime).First();

然后我意识到我不确定如何引用当前类的两个目录下的文件。

此外,.OrderByDecending不存在于GetFiles......

这是目录布局...我正在工作DATASuburbInitialiser

在此处输入图像描述

我如何获得相对(也将在发布模式下工作)SuburbCSV目录中最新的 csv 文件?

我会使用一个resx文件,但有人指出你必须停止应用程序,它是一个需要保持正常运行的 Web 应用程序,我需要不时更新郊区。

4

3 回答 3

1
  1. GetFiles()OrderByDescending返回一个数组,一旦你捕获了所有你正在寻找的文件,它肯定应该允许使用。您应该System.Linq在您的课程中添加对 CSV 文件的引用,并使用搜索模式(directory.GetFiles(*.csv)尽管我会选择),EnumerateFiles这样您就不会收集您不打算做任何事情的项目数组。

  2. 该文件夹在运行时的位置与当前类无关。它与应用程序的执行位置有关。这很可能是一个 bin 文件夹,您可以尝试使用相对路径,例如..\..\SUBURB.Initialisations\SuburbCSV添加 '..\',并根据需要添加其他父文件夹。SearchOption.AllDirectories一旦您确定您有一个父目录,该目录在某个子文件夹中包含文件并且您并不真正关心查看特定的子文件夹,您也可以利用它。但是,我只会在测试中这样做。

于 2019-12-31T06:28:16.373 回答
0

您需要在 .cs 文件中添加使用“ using System.Linq;”。

于 2019-12-31T06:45:31.523 回答
0

我将遵循“停止说话,给我看你的代码”的表达方式,所以这是我不言自明的代码。

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);
        }
    }
于 2019-12-31T10:06:52.190 回答