c# - 检查现有文件

标签 c# arrays file for-loop io

我需要一种方法来检查图片是否已经在 lbl_Dias 中。如果没有添加图片,如果是,则转到下一张图片。

这是为了制作一个随机顺序的图像列表,但没有重复。

到目前为止我得到的是这个

protected void DiasShow()
    {
        string[] getFiles = Directory.GetFiles(HttpContext.Current.Server.MapPath("/CSS/Design/Page_Design/Dias/1920x1080/"));

        for (int i = 0; i <= GetFiles.Length; i++)
        {
            Random FindRandom = new Random();
            string RandomFileName = getFiles[FindRandom.Next(getFiles.Length)];

            FileInfo ImageName = new FileInfo(RandomFileName);
            string FileType = ImageName.Name.Substring(ImageName.Name.Length - 4);

            if ((FileType.ToUpper() == ".JPG") || (FileType.ToUpper() == "JPEG"))
            {
                lbl_Dias.Text += "<img src=\"CSS/Design/Page_Design/Dias/1920x1080/" + ImageName.Name + "\" />";
            }
        }
    }

希望大家帮帮忙,我有点股票^^

最佳答案

首先,摆脱 NumberOfImages,因为它毫无意义。 整个 foreach 循环很糟糕,因为您在不需要它的地方遍历集合。

其次,您可以使用 FileInfo 的扩展属性来检查文件的扩展字符串 - 无需子字符串等。

第三,你到底想在这里做什么?

您确实意识到您可能会在循环结束时得到随机重复项,因为您没有从集合中删除使用过的图像。

最后,您根本不需要检查文件是否存在,因为您是从返回文件存在的函数中获取的。

protected void DiasShow()
{
    var mapPath = HttpContext.Current.Server.MapPath("/CSS/Design/Page_Design/Dias/1920x1080/");

    var images =
        Directory.GetFiles(mapPath).Select(
            file => new FileInfo(file)).Where(fi =>
                fi.Extension.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||
                fi.Extension.EndsWith("jpeg", StringComparison.OrdinalIgnoreCase)).ToList();

    var rand = new Random();

    while (images.Count > 0)
    {
        var i = rand.Next(images.Count);
        lbl_Dias.Text += "<img src=\"CSS/Design/Page_Design/Dias/1920x1080/" + images[i].Name + "\"/>";
        images.RemoveAt(i);
    }
}

关于c# - 检查现有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210238/

相关文章:

arrays - Swift - 表达式解析为未使用的左值

c++ - 尝试读取二进制文件 C++ 时出现问题

file - 在 installshield 中从命令行创建 .exe

c# - UIViewController 没有被处置

c# - FromBody mvc core 2.2 不起作用时出现错误请求

Java:声明一个大小为 n 的数组的大 O 时间是多少?

Javascript 根据两个值计算相同的对象值数组

javascript - Web API 2.0 使用 pascalcase 模型接收驼峰式命名的 JSON 数据

c# - 如何解析字符串并获取公式?在 C#

Python - 动态导入模块并为其分配本地名称