20分
public FileInfo[] order(FileInfo[] files) { for (int j = 1; j < files.Length; j++) { for (int i = 0; i < files.Length - 1; i++) { int bindex=files[i].Name.LastIndexOf(".")-6; int tempName1=Convert.ToInt32(files[i].Name.Substring(bindex,6)); bindex = files[i+1].Name.LastIndexOf(".") -6; int tempName2 = Convert.ToInt32(files[i+1].Name.Substring(bindex, 6)); // 如果 [i] > [i+1] ,则 [i] 上浮一位 if ( tempName1> tempName2) { FileInfo temp =files[i]; files[i] = files[i + 1]; files[i + 1] = temp; } } } return files; }
不知道你说的取后6为是什么,如果全是数字就这个方法试下,如果是数字在其中就自己再处理下,就这个思路。自己再改改吧。
—-
DirectoryInfo di = new DirectoryInfo(@”D:\data”);
FileInfo[] finfo = di.GetFiles();
var orderFiles = finfo.OrderBy(f => Path.GetFileNameWithoutExtension(f.Name).Substring(8, 6)).ToList();
foreach (object s in orderFiles)
{
listBox2.Items.Add(s.ToString());
FileInfo[] finfo = di.GetFiles();
var orderFiles = finfo.OrderBy(f => Path.GetFileNameWithoutExtension(f.Name).Substring(8, 6)).ToList();
foreach (object s in orderFiles)
{
listBox2.Items.Add(s.ToString());
}
—- 20分
Directory.GetFiles(“c:\\”, “*.*”).OrderBy(x => Path.GetFileName(x).SubString(Path.GetFileName(x).Length – 6))
—-
文件名用16进制表示的,一共有六位,现在想排序,从小到大,并且重新命名,第一个叫1,以此类推2,3,……
—-
没关系,十六进制也好十进制也好,都符合ascii序。
CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c#中如何取文件名的后六位,然后进行排序!