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