使用 "greatest index" 获取文件夹
Get the folder with "greatest index"
我有一个 .net 代码项目,我正在处理文件。
我有很多文件夹,命名规则是这样的:
pdf(1)
pdf(2)
pdf(3)
pdf(4)
pdf(5)
我要做的是当我插入一个新文件夹时,它的新名称应该是 (# of folders that exist+ 1)
这段代码做得很好:
string FileDirectory = "C\test\myfiles\";
string FileName = "pdf";
DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(FileDirectory);
FileSystemInfo[] filesAndDirs = hdDirectoryInWhichToSearch.GetFileSystemInfos("*" + FileName + "*");
int i = filesAndDirs.Length;
if (i>0)
{
i++;
Directory.CreateDirectory(FileDirectory + '\' + FileName+ "(" + i + ")");
}
现在,虽然此代码可以正常工作,但有时会出现这种情况。
例如,现有文件是:
pdf(1)
pdf(2)
pdf(5)
pdf(6),
它将尝试创建一个新文件夹,(# of folders + i) 这将是“pdf(5)”,但“pdf(5)”已经存在!
现在我的问题是:如何在这个例子中获得现有文件夹 (6) 的最高“索引”,并创建一个新文件夹 pdf(6)+1 ?
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp
{
public class Program
{
public static void Main()
{
List<string> files = new List<string>{"pdf(1)","pdf(2)","pdf(3)"};
List<string> nums = new List<string>();
foreach (var file in files)
{
var str = file.Substring(file.IndexOf("(")).Replace(")","").Replace("(","");
nums.Add(str);
}
var fileNums = nums.ConvertAll(x=>x);
var lastfileNo = fileNums.OrderByDescending(x => x).FirstOrDefault();
}
}
}
可能还有另一种方法
首先遍历文件并将其存储到字符串列表
然后全部转换成一个int,如果你不想转换就可以了
然后降序排列,找到第一个
我有一个 .net 代码项目,我正在处理文件。
我有很多文件夹,命名规则是这样的:
pdf(1)
pdf(2)
pdf(3)
pdf(4)
pdf(5)
我要做的是当我插入一个新文件夹时,它的新名称应该是 (# of folders that exist+ 1)
这段代码做得很好:
string FileDirectory = "C\test\myfiles\";
string FileName = "pdf";
DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(FileDirectory);
FileSystemInfo[] filesAndDirs = hdDirectoryInWhichToSearch.GetFileSystemInfos("*" + FileName + "*");
int i = filesAndDirs.Length;
if (i>0)
{
i++;
Directory.CreateDirectory(FileDirectory + '\' + FileName+ "(" + i + ")");
}
现在,虽然此代码可以正常工作,但有时会出现这种情况。 例如,现有文件是:
pdf(1)
pdf(2)
pdf(5)
pdf(6),
它将尝试创建一个新文件夹,(# of folders + i) 这将是“pdf(5)”,但“pdf(5)”已经存在!
现在我的问题是:如何在这个例子中获得现有文件夹 (6) 的最高“索引”,并创建一个新文件夹 pdf(6)+1 ?
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp
{
public class Program
{
public static void Main()
{
List<string> files = new List<string>{"pdf(1)","pdf(2)","pdf(3)"};
List<string> nums = new List<string>();
foreach (var file in files)
{
var str = file.Substring(file.IndexOf("(")).Replace(")","").Replace("(","");
nums.Add(str);
}
var fileNums = nums.ConvertAll(x=>x);
var lastfileNo = fileNums.OrderByDescending(x => x).FirstOrDefault();
}
}
}
可能还有另一种方法
首先遍历文件并将其存储到字符串列表 然后全部转换成一个int,如果你不想转换就可以了 然后降序排列,找到第一个