使用Directory.GetFiles,如何按文件名分别进行升序或降序排序?
string[] files=Directory.GetFiles(@Server.MapPath("./upload/"));
我得到的结果并不是按汉语拼音排列的,也无法按升序或降序排列。
请帮帮我,谢谢。
string[] files=Directory.GetFiles(@Server.MapPath("./upload/"));
我得到的结果并不是按汉语拼音排列的,也无法按升序或降序排列。
请帮帮我,谢谢。
左边最新的列表是按文件建立的时间来排序的。
中间这个没有进行排序处理。
谢谢。
using System;
using System.Collections;
using System.IO;class SortFile : IComparer
{
int IComparer.Compare(object a, object b)
{
FileInfo fa = (FileInfo)a;
FileInfo fb = (FileInfo)b; //order by LastWriteTime DESC
if (fa.LastWriteTime < fb.LastWriteTime)
return 1;
if (fa.LastWriteTime > fb.LastWriteTime)
return -1; return 0;
} public static void Main()
{
string sDir = @"d:\labs\aspnet";
DirectoryInfo di = new DirectoryInfo(sDir);
FileInfo[] fis = di.GetFiles();
foreach (FileInfo fi in fis)
Console.WriteLine("{0}, {1}", fi.Name, fi.LastWriteTime); Array.Sort(fis, new SortFile()); foreach (FileInfo fi in fis)
Console.WriteLine("{0}, {1}", fi.Name, fi.LastWriteTime); }
}
大哥,我是想分别用:
1、按文件名来进行升序或降序排列(未解决);
2、按扩展名来进行升序或降序排列(未解决);
3、按创建时间来进行升序或降序排列(已解决)。
谢谢。
using System.Collections;
using System.IO;public enum SortOption
{
FileName,
Extension,
CreationTime
}class SortFile : IComparer
{
SortOption mso;
public SortFile(SortOption so)
{
mso = so;
} int IComparer.Compare(object a, object b)
{
FileInfo fa = (FileInfo)a;
FileInfo fb = (FileInfo)b;
switch (mso)
{
case SortOption.FileName:
return String.Compare(fa.Name, fb.Name, true);
break;
case SortOption.Extension:
return String.Compare(Path.GetExtension(fa.Name), Path.GetExtension(fb.Name), true);
break;
case SortOption.CreationTime:
return DateTime.Compare(fa.CreationTime, fb.CreationTime);
break;
default: break;
}
return 0;
} public static void Main()
{
string sDir = @"e:\labs\csdn";
DirectoryInfo di = new DirectoryInfo(sDir);
FileInfo[] fis = di.GetFiles();
foreach (FileInfo fi in fis)
Console.WriteLine("{0}, {1}", fi.Name, fi.CreationTime); Array.Sort(fis, new SortFile(SortOption.FileName)); foreach (FileInfo fi in fis)
Console.WriteLine("{0}, {1}", fi.Name, fi.CreationTime);
Array.Sort(fis, new SortFile(SortOption.Extension)); foreach (FileInfo fi in fis)
Console.WriteLine("{0}, {1}", fi.Name, fi.CreationTime);
Array.Sort(fis, new SortFile(SortOption.CreationTime)); foreach (FileInfo fi in fis)
Console.WriteLine("{0}, {1}", fi.Name, fi.CreationTime); }
}
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。源错误:
行 153: int IComparer.Compare(object a, object b)
行 154: {
行 155: FileInfo fa = (FileInfo)a;
行 156: FileInfo fb = (FileInfo)b;
行 157: switch (mso)
Array.Sort(files, new SortFile(SortOption.FileName));
for(int i=0;i<files.Length;i++)
{
……
}
public class SortFile : IComparer
{
SortOption mso;
public SortFile(SortOption so)
{
mso = so;
}
int IComparer.Compare(object a, object b)
{
FileInfo fa = (FileInfo)a;
FileInfo fb = (FileInfo)b;
switch (mso)
{
case SortOption.FileName:
return String.Compare(fa.Name, fb.Name, true);
//break;
case SortOption.Extension:
return String.Compare(Path.GetExtension(fa.Name), Path.GetExtension(fb.Name), true);
//break;
case SortOption.CreationTime:
return DateTime.Compare(fa.CreationTime, fb.CreationTime);
//break;
default:
break;
}
return 0;
}
}
public enum SortOption
{
FileName,
Extension,
CreationTime
}
红色的错误提示落在:FileInfo fa = (FileInfo)a;这一行。
谢谢。
谢谢您,成了。现在想要做一个分页,又是很麻烦的哦。
谢谢。