C# 如何从其他Directores中的所有目录中获取所有文件并检查每个文件大小? for(int i=0;i
urlsDirectories包含5个目录,其中每个索引上都有一个目录。 每个目录中都有一些文件。我有一个字符串数组文件\u数组。我得到的数组,循环末尾的file_数组只包含最后一个目录文件,而不是所有文件。我需要那个特定目录中的所有文件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
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();