我有一個關于 .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),
它將嘗試創建一個新檔案夾,(檔案夾數 i),這將是“pdf(5)”但“pdf(5)”已經存在!
現在我的問題是:如何在此示例中獲得現有檔案夾 (6) 的最高“索引”,并創建一個新檔案夾 pdf(6) 1 ?
uj5u.com熱心網友回復:
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,如果您不想轉換,則可以,然后按降序排序并找到第一個
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/389747.html
下一篇:將事件格式應用于所有文本框
