文件即使存在也找不到。 .doc 和 .txt 有效,但 .jpg 和 .png 无效

问题描述 投票:0回答:1

我有这个代码:

public void OnCreated(object sender, FileSystemEventArgs file)
{
    Console.WriteLine("created called");

    string[] files = Directory.GetFiles($"{textBox2.Text}", file.Name);

    if (files.Length > 0)
    {
        if (trueFalse == "true")
        {
            if (!File.Exists(Path.Combine($"C:\\Users\\{Environment.UserName}\\OneDrive", file.Name)))
            {
                File.Copy(files[0], Path.Combine($"C:\\Users\\{Environment.UserName}\\OneDrive", file.Name));
            }
            else
            {
                Console.WriteLine("File already exists");
            }
        }

        if (!File.Exists(Path.Combine(textBox3.Text, file.Name)))
        {
            File.Move(files[0], Path.Combine(textBox3.Text, file.Name));
        }
        else
        {
            Console.WriteLine("File already exists");
        }
    }
    else
    {
        Console.WriteLine($"File {file.Name} not found in directory {textBox2.Text}.");
    }
}

当我在

.txt
.doc
.docx
文件上测试它时,它可以工作并移动和复制,但是
.png
.jpg
不这样做,然后转到 else{} 块。

我不知道是什么导致了这种行为。有帮助吗?

c# .net winforms filesystemwatcher
1个回答
0
投票

自从 目录.GetFiles() 方法返回与搜索模式匹配的文件名数组,这是可能的 目录.GetFiles() 没有正确匹配图像文件。您可以尝试更改搜索模式以包括所有图像格式,例如:

string[] files = Directory.GetFiles($"{textBox2.Text}", "*.*", SearchOption.AllDirectories).Where(f => f.EndsWith(".png") || f.EndsWith(".jpg") || etc..).ToArray();

这将获取目录中的所有文件并将结果过滤为具有指定扩展名的文件。

或者,您也可以在对文件执行任何操作之前检查文件是否存在:

    string sourceFilePath = Path.Combine($"{textBox2.Text}", file.Name);
    string destinationFilePath = Path.Combine(textBox3.Text, file.Name);
    if (File.Exists(sourceFilePath))
    {
        if (files.Length > 0)
        {
            if (trueFalse == "true")
            {
                if (!File.Exists(Path.Combine(pathstring), file.Name)))
                {
                    File.Copy(sourceFilePath, Path.Combine(pathstring), file.Name));
            }
            else
            {
                Console.WriteLine("File already exists");
            }
        }

        if (!File.Exists(destinationFilePath))
        {
            File.Move(sourceFilePath, destinationFilePath);
        }
        else
        {
            Console.WriteLine("File already exists");
        }
    }
    else
    {
        Console.WriteLine($"File {file.Name} not found in directory {textBox2.Text}.");
    }
}
else
{
    Console.WriteLine($"File {file.Name} not found in directory {textBox2.Text}.");
}

这将在尝试移动或复制文件之前首先检查源目录中是否存在该文件,如果找不到该文件,将打印一条错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.