如何用C#从指定文件夹获取最近上传的多份文件
解决C#获取文件夹中最近上传的多份文件问题
你当前的Directory.GetFiles()方法只会返回目录下所有文件的路径,无法直接筛选最近上传的文件。要实现需求,需要借助FileInfo类获取文件的时间属性(如最后写入时间、创建时间),再排序筛选:
实现步骤
- 先获取目录下所有文件的
FileInfo对象集合,这类对象包含文件的元数据(时间、大小等) - 按文件的最后写入时间(上传文件时的写入操作会更新这个时间)或创建时间降序排序
- 提取排序后前N个文件的路径,转为
string[]数组
代码示例
比如要获取最近上传的10个文件:
string uploadDir = Request.PhysicalApplicationPath + "\\Content\\Uploads\\"; // 获取目录下所有文件的FileInfo对象 FileInfo[] fileInfos = new DirectoryInfo(uploadDir).GetFiles(); // 按最后写入时间降序排序,最近的排在最前面 var sortedFiles = fileInfos.OrderByDescending(f => f.LastWriteTime); // 取前10个文件,提取路径转为string[] string[] recentFiles = sortedFiles.Take(10).Select(f => f.FullName).ToArray();
注意事项
- 如果需要更精准的上传时间,建议在上传文件时将时间记录到数据库或文件命名中(比如文件名包含时间戳),避免文件后续被修改导致
LastWriteTime变化 - 若上传的是全新文件,用
CreationTime也可以,但如果是覆盖已有文件,CreationTime不会更新,此时LastWriteTime更准确
内容的提问来源于stack exchange,提问作者Nurin Azmir
相关产品推荐
相关产品推荐

