2020快过完了,赶紧水一篇博客

//获取桌面路径
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string path = string.Format(@"{0}\{1}", desktop, "加密前");
DirectoryInfo folder = new DirectoryInfo(path);
//从路径下循环获取文件
foreach(FileInfo file in folder.GetFiles())
{
  //打印文件路径到控制台
  Console.WriteLine(file.FullName);
}
Console.ReadKey();

控制台打印信息

很明显,这个打印的顺序就不对

可以稍加修改一下,写入到txt

string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string path = string.Format(@"{0}\{1}", desktop, "加密前");
DirectoryInfo folder = new DirectoryInfo(path);
StreamWriter txt;
if (File.Exists(desktop + "\\" + "路径.txt"))
{
  //把原来的删掉重新创建一个
  File.Delete(desktop + "\\" + "路径.txt");
  txt = File.CreateText(desktop + "\\" + "路径.txt");
}
else
{
  //创建->路径.txt
  txt = File.CreateText(desktop + "\\" + "路径.txt");
}
List<string> fileNameList = new List<string>();
foreach (FileInfo file in folder.GetFiles())
{
  //写入到list里面存储
  fileNameList.Add(file.FullName);
}
//创建一个数组
string[] list=new string[fileNameList.Count];
//把list值加到数组
for(int i = 0; i < fileNameList.Count; i++)
{
  list[i] = fileNameList[i];
}
//调用排序方法
Array.Sort(list, new FileNameSort());
foreach(var fileUrl in list)
{
  //写入txt
  txt.WriteLine(fileUrl);
  Console.WriteLine(fileUrl);
}
//释放资源
txt.Close();
txt.Dispose();
Console.ReadKey();

这里说一下为啥要创建list和数组

因为看上图顺序是乱的,所以就排序了一下

这一次就没问题了

包括文本写入也正常

排序的方法

public class FileNameSort : IComparer
{
  //调用windos 的 DLL
  [System.Runtime.InteropServices.DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]
  private static extern int StrCmpLogicalW(string param1, string param2);

  //前后文件名进行比较。
  public int Compare(object name1, object name2)
  {
    if (null == name1 && null == name2)
    {
      return 0;
    }
    if (null == name1)
    {
      return -1;
    }
    if (null == name2)
    {
      return 1;
    }
    return StrCmpLogicalW(name1.ToString(), name2.ToString());
  }
}

被这风吹散的人说Ta爱的不深,被这雨淋湿的人说Ta不会冷