C# 如何从其他Directores中的所有目录中获取所有文件并检查每个文件大小? for(int i=0;i

C# 如何从其他Directores中的所有目录中获取所有文件并检查每个文件大小? for(int i=0;i,c#,winforms,C#,Winforms,urlsDirectories包含5个目录,其中每个索引上都有一个目录。 每个目录中都有一些文件。我有一个字符串数组文件\u数组。我得到的数组,循环末尾的file_数组只包含最后一个目录文件,而不是所有文件。我需要那个特定目录中的所有文件 private void timer1_Tick(object sender, EventArgs e) { try { //this.pictureBo

urlsDirectories包含5个目录,其中每个索引上都有一个目录。 每个目录中都有一些文件。我有一个字符串数组文件\u数组。我得到的数组,循环末尾的file_数组只包含最后一个目录文件,而不是所有文件。我需要那个特定目录中的所有文件

private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {     
                //this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                if (leave == true)
                {
                    pb.Load(file_array[file_indxs]);
                }
                else
                {
                    pbs[0].Load(file_array[file_indxs]);
                }
                file_indxs = file_indxs - 1;
                if (file_indxs < 0)
                {
                    file_indxs = file_array.Length - 1;
                }
            }
            catch
            {
                timer1.Enabled = false;
            }
        }
完成后,我需要检查文件大小是否大于0,如果满足条件,则继续

编辑**这是计时器1滴答声事件:

          for (int i = 0; i < BackgroundWorkerConfiguration.urlsDirectories.Count; i++)
            {
                 file_array =Directory.GetFiles(BackgroundWorkerConfiguration.urlsDirectories[i]);
            }

            DateTime[] creationTimes8 = new DateTime[file_array.Length];


              for (int i = 0; i < file_array.Length; i++)
                creationTimes8[i] = new FileInfo(file_array[i]).CreationTime;
            Array.Sort(creationTimes8, file_array);
            file_indxs = 0;
            file_indxs = file_array.Length - 1;
            timer1.Enabled = true;
private void timer1\u勾选(对象发送方,事件参数e)
{
尝试
{     
//this.pictureBox1.SizeMode=PictureBoxSizeMode.StretchImage;
if(leave==true)
{
Load(file_数组[file_indxs]);
}
其他的
{
pbs[0]。加载(文件\u数组[file\u indxs]);
}
file_indxs=file_indxs-1;
如果(文件索引<0)
{
file_indxs=file_array.Length-1;
}
}
抓住
{
timer1.Enabled=false;
}
}

您可以使用递归函数从目录中获取文件

private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {     
                //this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                if (leave == true)
                {
                    pb.Load(file_array[file_indxs]);
                }
                else
                {
                    pbs[0].Load(file_array[file_indxs]);
                }
                file_indxs = file_indxs - 1;
                if (file_indxs < 0)
                {
                    file_indxs = file_array.Length - 1;
                }
            }
            catch
            {
                timer1.Enabled = false;
            }
        }
void GetFiles(字符串目录、引用列表目录)
{
var tempFiles=目录。枚举文件(目录);
var tempDirs=目录。枚举目录(目录);
foreach(临时文件中的变量x)
目录。添加(x);
foreach(变量x在tempDirs中)
GetFiles(x,ref目录);
}

这将从文件夹及其子文件夹中获取所有文件。然后,您可以获取已枚举文件的数据。

您可以使用以下代码将所有目录中大小大于0的文件获取到
列表中:

void GetFiles(string directory, ref List<string> directories)
{
    var tempFiles = Directory.EnumerateFiles(directory);
    var tempDirs = Directory.EnumerateDirectories(directory);
    foreach (var x in tempFiles)
        directories.Add(x);
    foreach (var x in tempDirs)
        GetFiles(x, ref directories);
}
如果要按降序排序,可以使用

String[] file_array = fileList.OrderBy(x => x.CreationTime).Select(x => x.FullName).ToArray();

Syzmon以及我现在如何将此列表与其余代码一起使用?在剩下的代码中,我使用了字符串[]的file_数组,但现在我有了一个列表。上面的其余代码及其下的DateTime和循环..您如何处理其余的代码?有点不清楚。你只是按照创建时间来排序吗?Szymore我现在更新了我的问题,让你看看我以后用它做什么。我在timer1 tick事件中使用它以类似pictureBox的动画显示图像/文件。这就是为什么我对它进行排序,以便它从第一个文件开始设置动画。但在我使用字符串[]Szymon的file_数组之前,它是有效的,但它从最后一个开始到第一个。至少在图像上,我看到日期和时间以及动画移到了错误的一侧。那么我该如何从第一个开始到最后一个呢?也许排序应该是其他的,而不是creationtime?Szymon它现在可以工作了,但我认为最好从计时器滴答声事件中修复它,然后反转数组。
String[] file_array = fileList.OrderByDescending(x => x.CreationTime).Select(x => x.FullName).ToArray();