在之前我会创建一个文件夹。然后往里面插入图片文件,名字是有规则的。1.JPG,2.JPG.......在我读取的时候 去的图片文件 不是按名称排序的
这个怎么实现          是在创建文件夹的时候就给他设定排序类型。还是在取得的时候在进行名称排序?、、请指点。。谢谢

解决方案 »

  1.   

    你是不是指使用GetFiles,得到的文件名没有按数字排序?
    默认情况下是按字符串排序的,也就是类似这样排序:
    1.jpg
    11.jpg
    12.jpg
    ...
    2.jpg
    21.jpg
    ...如果希望按你的要求排序,则要自己写
      

  2.   

    按你的要求实现的排序代码:
    string[] arr = Directory.GetFiles("");
    Array.Sort(arr, (fileA, fileB) => { int a, b;
        // 如果文件a和文件b,2个文件名都能转换成数字,就按数字排序,否则按字符串排序
    if (int.TryParse(Path.GetFileNameWithoutExtension(fileA), out a) && int.TryParse(Path.GetFileNameWithoutExtension(fileB), out b))
        return a.CompareTo(b);
    else
        return fileA.CompareTo(fileB);
    });
      

  3.   

    List<FileInfo> lst=new List<FileInfo>();foreach (string file in System.IO.Directory.GetFiles("", "*.*", System.IO.SearchOption.AllDirectories))
    {
      lst.Add(new FileInfo(file));
    }
    var result= (from r in lst
      orderby r.Name   
      select r).Take(20); lst.Sort(delegate( FileInfo p1, FileInfo p2) { return p1.LastAccessTime.CompareTo(p2.LastAccessTime); });
    public class FileComparer : IComparer<FileInfo>
    {
      public int Compare(FileInfo x, FileInfo y)
      {
      return x.LastAccessTime.CompareTo(y.LastAccessTime);
      }
      }
    }
      

  4.   


     public class DefineSort : IComparer
        {
            public int Compare(object x, object y)
            {
                try
                {
                    FileInfo fileX = (FileInfo)x;
                    FileInfo fileY = (FileInfo)y;
                    return string.Compare(Path.GetFileNameWithoutExtension(fileX.Name), Path.GetFileNameWithoutExtension(fileY.Name));
                }
                catch
                {
                    throw;
                }
            }
        }
     public void Sort()
            {
                FileInfo[] files = scanDirInfo.GetFiles(_scanType, SearchOption.AllDirectories);
                Array.Sort(files, new DefineSort());
            }
      

  5.   

    string[] arr = Directory.GetFiles("");
    Array.Sort(arr, (fileA, fileB) => { int a, b;
        // 如果文件a和文件b,2个文件名都能转换成数字,就按数字排序,否则按字符串排序
    if (int.TryParse(Path.GetFileNameWithoutExtension(fileA), out a) && int.TryParse(Path.GetFileNameWithoutExtension(fileB), out b))
        return a.CompareTo(b);
    else
        return fileA.CompareTo(fileB);
    });