找不到目录

Directory could not be found

我最近开始收到一个错误,指出无法找到我的目录我已经尝试了多种方法来解决这个问题,但还没有找到解决方案。

该方法应允许用户为他们的计算机 select 图像,并将其添加到应用程序文件夹结构内名为 images 的文件夹中。问题是当使用 File.copy(imageFilename, path);它抛出错误。我试过改变路径,你会从代码中看到它被剪掉了。当程序本身已经传递了应用程序的文件路径并且仍然向我抛出错误时,它甚至会这样做。

这就是方法。

    private void btnImageUpload_Click(object sender, RoutedEventArgs e)
    {
        OpenFileDialog imageFile = new OpenFileDialog();
        imageFile.InitialDirectory = @"C:\";
        imageFile.Filter = "Image Files (*.jpg)|*.jpg|All Files(*.*)|*.*";
        imageFile.FilterIndex = 1;

        if (imageFile.ShowDialog() == true)
        {
            if(imageFile.CheckFileExists)
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                System.IO.File.Copy(imageFile.FileName, path);
            }
        }
    }

我使用的是 VS2013 并且包含了使用 Microsoft.win32

需要任何进一步的信息请询问。

谢谢

我不确定这是否是问题所在,但 File.Copy 方法需要源文件名和目标文件名,而不是源文件名和目录:https://msdn.microsoft.com/en-us/library/c6cfw35a(v=vs.110).aspx

因此,要使这项工作正常进行,在您的情况下,您必须执行以下操作(省略命名空间):

File.Copy(imageFile.FileName, Path.Combine(path, Path.GetFileName(imageFile.FileName));

请注意,如果目标文件存在,这将失败,要覆盖它,您需要在 Copy 方法中添加一个额外的参数 (true)。

编辑: 请注意,OpenFileDialog.CheckFileExists 不是 return 指示所选文件是否存在的值。相反,它是一个值,指示如果用户指定不存在的文件名,文件对话框是否显示警告。因此,与其在对话框关闭后检查此 属性,不如在打开它之前将其设置为 true (https://msdn.microsoft.com/en-us/library/microsoft.win32.filedialog.checkfileexists(v=vs.110).aspx)

有两件事需要考虑

private void btnImageUpload_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog imageFile = new OpenFileDialog();
    imageFile.InitialDirectory = @"C:\";
    imageFile.Filter = "Image Files (*.jpg)|*.jpg|All Files(*.*)|*.*";
    imageFile.FilterIndex = 1;

    if (imageFile.ShowDialog() == true)
    {
        if(imageFile.CheckFileExists)
        {
            string path = AppDomain.CurrentDomain.BaseDirectory; // You wont need it 
            System.IO.File.Copy(imageFile.FileName, path); // Copy Needs Source File Name and Destination File Name
        }
    }
}

string path = AppDomain.CurrentDomain.BaseDirectory; 您不需要这个,因为默认目录是您的程序所在的当前目录 运行。 第二 System.IO.File.Copy(imageFile.FileName, path); 复制需要源文件名和目标文件名,因此您只需提供文件名而不是路径

因此您的更新代码将是

private void btnImageUpload_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog imageFile = new OpenFileDialog();
    imageFile.InitialDirectory = @"C:\";
    imageFile.Filter = "Image Files (*.jpg)|*.jpg|All Files(*.*)|*.*";
    imageFile.FilterIndex = 1;

    if (imageFile.ShowDialog() == true)
    {
        if(imageFile.CheckFileExists)
        {
            System.IO.File.Copy(imageFile.FileName, SomeName + ".jpg"); // SomeName Must change everytime like ID or something 
        }
    }
}