【问题标题】:sorting files on a fat32 usb在 fat32 usb 上排序文件
【发布时间】:2014-04-01 17:19:55
【问题描述】:

我正在制作一个应用程序来将目录中的文件排序为与列表框相同的顺序,现在我试图让它对 fat32 文件表中的文件进行排序,但无法找出如何或是否可以在 c# 上执行此操作谁能帮我把将文件添加到列表框的代码

private void openfolder()
{
     if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
     {
          DirectoryInfo dinfo = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
          FileInfo[] Files = dinfo.GetFiles("*.*");
          foreach (FileInfo file in Files)
          {
              listBox1.Items.Add(file.Name);
          }
      }
}

【问题讨论】:

  • 实际上并没有像在目录中排序文件这样的事情。只有显示排序的程序。至少,没有任何有用的级别 - 也不是您正在处理的代码级别。
  • 它为 cd 播放器和东西排序文件 有像 fatsort 一样的程序,但我想对它有更多的控制,因此这个程序我知道我可以在 c++ 中做到这一点,但我还没有学过 c++,所以我想知道我是否可以在 C# 中做到这一点
  • 啊……应该提到!一种非常罕见的情况,它确实有意义!
  • lol np 正如我所说,我想以任何我想要的顺序对文件进行排序,而不仅仅是按字母顺序我要查看 fatsorter 源代码,看看它是否有帮助

标签: c# sorting fat32


【解决方案1】:

好的。所以它是这样的:

var path = @"U:\";
var di = new DirectoryInfo(path);
var files = di.EnumerateFiles("*.*", SearchOption.TopDirectoryOnly).ToList();
var newDirPath = Path.Combine(path,Guid.NewGuid().ToString("N"));
di = Directory.CreateDirectory(newDirPath);
files.ForEach(f => f.MoveTo(Path.Combine(newDirPath, f.Name)));
files=di.EnumerateFiles("*.*", SearchOption.TopDirectoryOnly)
        .OrderBy(f=>f.CreationTime) //sort here
        .ToList();
files.ForEach(f=>f.MoveTo(Path.Combine(path,f.Name)));
Directory.Delete(newDirPath);

您反对移动文件是没有根据的。移动操作不会复制数据。它只是改变了分配表。

【讨论】:

  • 我想更改分配数据,因为这就是我的 cd 播放器和许多其他播放器的排序方式。他们使用分配数据
  • @outlaw1994 :我做了一些阅读,这就是你这样做的方式。你试过这种方法吗?是什么让您认为您必须进行一些低级操作?
  • 因为这就是所有其他 progs 在 C++ 中的做法。我会尝试这种方式,但查看它按创建时间对它们进行排序的代码我将如何将其排序到与列表相同的顺序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2014-05-30
  • 2016-12-17
  • 1970-01-01
  • 2010-11-15
相关资源
最近更新 更多