我有几个安全摄像头将图片上传到我的ftp服务器。其中一些凸轮在新的一天开始时以“yyyymmdd”格式方便地创建子文件夹。这很棒,可以在特定日期轻松维护/删除旧图片。其他凸轮不是很好,只是将图片转储到一个巨大的文件夹中,使删除变得困难。
所以我正在编写一个C#windows窗体程序,使用FolderBrowserDialog转到特定文件夹(源文件夹),并使用FBD命名目标文件夹。我使用标准进程使用通过Directory.GetFiles()方法填充的字符串数组迭代文件列表。我使用文件的创建日期创建一个子文件夹,如果它不存在。在任何一种情况下,我都会将文件移动到基于日期的子文件夹。使用少量文件进行测试时效果很好。
现在我已准备好测试真实数据了,我担心有些文件夹有数千个文件,我会遇到很多关于内存和其他问题的问题。字符串数组处理如此庞大的数据量有多好?请注意,一个文件夹有超过28,000张图片。字符串数组可以处理如此大量的FileInfo对象吗?
我的问题是如何在不使用字符串数组和Directory.GetFiles()方法的情况下迭代给定文件夹中的文件列表?虽然我想在Windows窗体环境中使用c#,但我对任何想法持开放态度。我有一个附加功能,可以删除比给定日期更早的图片而不是移动它们。
非常感谢!
答案 0 :(得分:0)
您可以使用数千个文件名。您可能遇到数百万的问题,但数千对C#来说并不重要。你可能因为NTFS的工作方式而遇到性能问题,但如果是这样的话,那么在C#中你无能为力;它是文件系统中固有的问题。
但是,如果你真的想选择这个,你可以使用Directory.EnumerateFileSystemInfos()
做得更好。与GetFiles()
相比,此方法有两个好处: