C#和#xA0;处理文件错误
我正在尝试打开一个文件,如果文件路径不存在,我希望返回例如X,如果文件无法打开,则返回Y,如果打开成功,则返回Z 但是,我不明白如何检查“文件无法打开”错误,我不确定我的try-catch到目前为止是否正确。我还想添加另一条语句来检查文件是否已打开C#和#xA0;处理文件错误,c#,error-handling,file-io,C#,Error Handling,File Io,我正在尝试打开一个文件,如果文件路径不存在,我希望返回例如X,如果文件无法打开,则返回Y,如果打开成功,则返回Z 但是,我不明白如何检查“文件无法打开”错误,我不确定我的try-catch到目前为止是否正确。我还想添加另一条语句来检查文件是否已打开 public int Opener(string fileName) { string text = ""; try { text = F
public int Opener(string fileName)
{
string text = "";
try
{
text = File.ReadAllText(fileName);
return "Something to Return";
}
catch (FileNotFoundException)
{
return "Something to Return";
}
函数被声明为返回一个
int
,因此需要一个数字,如-1、0或1。如果要返回文本错误消息,请将函数返回类型更改为string
您可以使用此选项检查所描述的情况:
try
{
string text = File.ReadAllText(fileName);
//Z: reading was successful
}
catch (Exception ex)
{
if (ex.InnerException is IOException)
{
//Y: file is already being read
}
else if (ex.InnerException is FileNotFoundException)
{
//X: file does not exist
}
}
函数被声明为返回一个
int
,因此需要一个数字,比如-1,0,1。这很有意义。但是如何检查文件是否由于某种原因无法打开?这将被视为Y。如果文件已被另一个进程访问,因此程序无法打开,则会导致IOException
。访问该文件的进程是您的程序本身还是另一个进程并不重要。好的,我现在明白了。您知道我是否可以使用I0Exception检查文件是否已打开吗?如果是这样的话,我怎么能返回一个不同的值呢?因此,如果文件无法打开,则返回X,如果文件已打开,则返回J。您的意思是程序已打开还是一般已打开?理想情况下两者都是,但在本例中,如果文件已一般打开,则我更感兴趣。我不想返回字符串。这只是为了描述问题。如果你想用文本或语言来描述问题,你有一个字符串!