【问题标题】:How can I solve this? "A first chance exception of type 'System.IO.IOException' occurred in mscorlib.dll"我该如何解决这个问题? “在 mscorlib.dll 中发生了‘System.IO.IOException’类型的第一次机会异常”
【发布时间】:2015-03-28 02:15:00
【问题描述】:

我最近开始使用 Visual C#,因为我认为尝试一次与 Unity 不同的东西会很有趣。所以我尝试制作一个程序,搜索设置的目录,根据我需要的扩展名抓取文件,然后将它们移动到文件夹中。

现在我已经弄清楚了目录扫描并过滤掉了所有我需要使用 DirectoryInfo 和 FileInfo 列表的扩展名,这不会导致任何明显的问题。杀死我的是 FileInfo.MoveTo 方法。我设置了一个字符串变量,您将在下面看到它作为路径。然后将其作为 MoveTo 的字符串参数。一切似乎都是有道理的,当我将“target.Name”放入将文件移动到根目录时它会起作用,但如果我放入“Directory.GetCurrentDirectory()”或“target.名称”,因为它本身。

抱歉这个冗长的问题,但这真的让我很生气。

static List<FileInfo> _targetFiles = new List<FileInfo>();
static string _targetPath = Directory.GetCurrentDirectory();
 static void Main(string[] args)
    {


        CopyFiles(_targetFiles, _targetPath);
        Console.WriteLine("Scan finished.");
        Console.Read();
    }
static void CopyFiles(List<FileInfo> files, string path)
    {
        foreach (FileInfo target in files)
        {
            try
            {

                target.MoveTo(_targetPath);
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine(target + " moved to " + _targetPath);
                Console.ResetColor();

            }
            catch
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("TRANSFER FAILED: " + target);
                Console.ResetColor();
            }

        }
    }

输出:

A first chance exception of type 'System.IO.IOException' occurred in mscorlib.dll

控制台

TRANSFER FAILED: filename.ext

【问题讨论】:

  • 目录不是文件名。

标签: c# copy move ioexception


【解决方案1】:

不确定我是否正确地回答了问题。当您使用当前目录 (Directory.GetCurrentDirectory();) 时,似乎您正试图覆盖您的 exe 和 dll。

其次,您需要提供一个完全限定的路径作为文件名。目录路径映射到文件夹。

【讨论】:

  • 我正在移动的文件只是图像,目前只是一个测试,目录也是如此,收集了一堆我定义的相同类型的文件,然后将它们移动到不同的位置。至于第二个,你的意思是包含文件名的路径吗?因为我没有尝试这样做,所以我现在会回复你,谢谢。
  • 你正在使用 Directory.GetCurrentDirectory();检查它指向的路径。
  • 太棒了!它有效,我只是在目录末尾添加了“+ target.Name”!和 Directory.GetCurrentDirectory();只是一个占位符,因为我已经知道它在哪里,一个测试。而且我有一个输出到哪里的控制台输出,所以我知道在哪里检查它是否有效。谢谢你的帮助,是小事害死我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
相关资源
最近更新 更多