Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未找到系统io文件异常/错误处理_C# - Fatal编程技术网

C# 未找到系统io文件异常/错误处理

C# 未找到系统io文件异常/错误处理,c#,C#,我在C#工作,我试着做一个程序,从目录中的文件中获取一些信息。我成功了,但我在错误处理方面有问题。当程序运行时,例如,我只给列表文件信息提供随机数,我会收到以下错误消息: System.IO.DirectoryNotFoundException:“'找不到路径'C:\Temp\first\u project\first\u project\bin\Debug\12345'的一部分。” 请有人帮我做错误处理 先谢谢你 using System; using System.IO; c

我在C#工作,我试着做一个程序,从目录中的文件中获取一些信息。我成功了,但我在错误处理方面有问题。当程序运行时,例如,我只给列表文件信息提供随机数,我会收到以下错误消息:

System.IO.DirectoryNotFoundException:“'找不到路径'C:\Temp\first\u project\first\u project\bin\Debug\12345'的一部分。”

请有人帮我做错误处理

先谢谢你

using System;
    using System.IO;
    class Test
        {
            static void Main(string[] args)
             {
                Console.WriteLine("Please :");
                string hely = Console.ReadLine();
                string[] __file = Directory.GetFiles(hely);
                string[] __dir = Directory.GetDirectories(hely);

                foreach (string i in __file)
                {
                    FileInfo fajl = new FileInfo(i);
                    Console.WriteLine("{0},{1},{2}", fajl.Name, fajl.Extension, fajl.LastWriteTime.ToString());
                }
                foreach (string i in __dir)
                {
                    DirectoryInfo _file = new DirectoryInfo(i);
                    Console.WriteLine("{0},{1},{2}", _file.Name, _file.Extension, _file.LastWriteTime.ToString());
                }


            Console.ReadKey();
             }

        }
使用试捕

using System;
    using System.IO;
    class Test
        {
            static void Main(string[] args)
             {
                Console.WriteLine("Please :");
                string hely = Console.ReadLine();

                try
                {
                   string[] __file = Directory.GetFiles(hely);
                   string[] __dir = Directory.GetDirectories(hely);
                   foreach (string i in __file)
                   {
                      FileInfo fajl = new FileInfo(i);
                       Console.WriteLine("{0},{1},{2}", fajl.Name, fajl.Extension, fajl.LastWriteTime.ToString());
                   }

                   foreach (string i in __dir)
                   {
                      DirectoryInfo _file = new DirectoryInfo(i);
                      Console.WriteLine("{0},{1},{2}", _file.Name, _file.Extension, _file.LastWriteTime.ToString());
                   }
                }
                catch(System.IO.DirectoryNotFoundException ex)
                {
                    Console.WriteLine("Directory not found");
                }

                Console.ReadKey();
             }

        }
你可以检查一下


您应该使用

System.IO.Directory.Exists(directory)
和一个文件的

System.IO.File.Exists(filePath)
然后,您需要在for循环中使用try-catch块,以捕获由于权限/权限不足而发生的任何可能的异常

e、 g

您还可以创建两个try-catch块,具体取决于您要执行的操作

try
{
    foreach (string i in __file)
    {
        try
        {
            FileInfo fajl = new FileInfo(i);
            Console.WriteLine("{0},{1},{2}", fajl.Name, fajl.Extension, fajl.LastWriteTime.ToString());
        }
        catch (System.Exception ex)
        {
            System.Console.WriteLine(ex.Message);
            throw;
        }

    }
}
catch (System.Exception exLoop)
{
    System.Console.WriteLine(exLoop.Message);
    throw;
}
注意,在您的示例中,您应该首先检查目录“hely”是否存在:

由于异常处理通常非常缓慢,因此我建议您明确检查文件/目录是否存在。对于相应用户的文件/目录列表和读取访问权限,这样做也是一个好主意。但即使这样做,也要保留try-catch,因为您的程序可能在某些情况下突然出现故障-例如,当强制移除可移动存储器时。

RTFM

阅读

它表示,如果找不到指定的路径,您将获得
DirectoryNotfound
异常。显然,文件夹“C:\Temp\first\u project\first\u project\bin\Debug\12345”不存在

适当的代码是:

string hely = ...
try
{
    string[] files = Directory.GetFiles(hely);
    ProcessFiles(files);
}
catch (DirectoryNotFoundException exc)
{
    Console.WriteLine(exc.Message);
}

如果您不知道如何应对异常,请阅读

如果用户提供的目录不存在,我们不知道您想做什么。基本上,您应该捕获
FileNotFoundException
并以这种方式执行任何您想做的事情,但如果没有更明确的指示,我们无法真正帮助您尝试实现什么,或者您正在做什么我已经试过了。
try
{
    foreach (string i in __file)
    {
        try
        {
            FileInfo fajl = new FileInfo(i);
            Console.WriteLine("{0},{1},{2}", fajl.Name, fajl.Extension, fajl.LastWriteTime.ToString());
        }
        catch (System.Exception ex)
        {
            System.Console.WriteLine(ex.Message);
            throw;
        }

    }
}
catch (System.Exception exLoop)
{
    System.Console.WriteLine(exLoop.Message);
    throw;
}
if (!System.IO.Directory.Exists(hely))
{
    System.Console.Error.WriteLine("Directory \"{0}\" does not exist.", hely);
    System.Environment.Exit(1);
    // or: return;
}
string hely = ...
try
{
    string[] files = Directory.GetFiles(hely);
    ProcessFiles(files);
}
catch (DirectoryNotFoundException exc)
{
    Console.WriteLine(exc.Message);
}