我怎么解决这个问题? “在mscorlib.dll中发生'System.IO.IOException'类型的第一次机会异常”

时间:2015-03-28 02:15:01

标签: c# copy move ioexception

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

现在我已经找到目录扫描并过滤掉所有需要使用DirectoryInfo和FileInfo列表的扩展,这不会导致任何明显的问题。杀死我的是FileInfo.MoveTo方法。我将一个字符串变量设置为路径,您将在下面看到它。然后将其作为MoveTo的字符串参数。一切似乎都有意义,当我把" target.Name"因为它将文件移动到根目录,但是如果我把" Directory.GetCurrentDirectory()"或者" target.Name"以外的任何其他目录;因为它本身就是。

为这个冗长的问题道歉,但这真的让我感到害怕。

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

1 个答案:

答案 0 :(得分:1)

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

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