c# - 返回具有最高值的文件名
问题描述
我正在编写一个 .NET Framework (C#) 应用程序。我有一个包含文件和文件夹的目录。每个文件夹都有一个 3 位数字作为其名称。我想找到具有最高值的文件夹名称。
到目前为止,我想出了以下代码:
public void doCopyFiles()
{
string sourceDir = @"C:\Users\xyz\abc\gth";
var sorted = Directory.GetFiles(sourceDir, ".").OrderBy(path => int.Parse(Path.GetFileNameWithoutExtension(path)));
var lastFile = sorted.Last();
Console.WriteLine(lastFile);
}
但是,这会引发 System.FormatException,它表示“输入字符串不是预期的格式”。我假设这是因为存在其他文件,它们的文件名是普通字符串。
关于如何解决这个问题有什么建议吗?
编辑:尝试下面显示的两种解决方案后,相同的错误仍然存在。
解决方案
编辑以反映对评论问题和建议的回答。
public void doCopyFiles()
{
int highestFolder = int.MinValue;
string sourceDir = @"C:\Users\xyz\abc\gth";
var dirs = Directory.GetDirectories(sourceDir);
foreach(var value in dirs)
{
if(int.TryParse(value, out int result))
{
if(result > highestFolder)
{
highestFolder = result;
}
}
}
if(highestFolder != int.MinValue)
{
Console.WriteLine(highestFolder);
}
else //no folder with int names were found
{
//error message
}
}
推荐阅读
- performance - webgl 不能在集成显卡上的一次 drawcall 中绘制太多图元
- ios - IOS 在应用程序拒绝问题 - 指南 2.1 - 性能 - 应用程序完整性
- node.js - 在猫鼬中删除文档时出现UnhandledPromiseRejectionWarning
- amazon-web-services - 如何通过 CloudFormation YAML 将堆栈导出的现有 S3 存储桶导入另一个堆栈
- python - 在 Log N 时间内设计一个算法
- mysql - 为什么将 MySQL 代码添加到基于 epoll 的网络爬虫中会大大降低它的速度?
- python-3.x - 将数据移动到 Amazon Kinesis 时出错(成员的长度必须小于或等于 1048576)
- java - 返回 Java 流的空值
- android - Kotlin Multiplatform:找不到插件 [id: 'com.android.library']
- c - 如何将字符串转换为整数然后在 C 中的两个字符串之间进行减法?