FileInfo对象OpenRead()的时候发生异常,急!

时间:2023-01-16 22:05:10
FileInfo fi = new FileInfo(file)
FileStream fs = fi.OpenRead();


文件存在,但是OpenRead时候出异常:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.FileInfo.OpenRead()

什么原因?大家帮帮忙,谢谢

14 个解决方案

#1


FileInfo的OpenRead()方法可能会抛出一下三种类型的异常:
UnauthorizedAccessException
 path 为只读,或者是一个目录。 
 
DirectoryNotFoundException
 指定的路径无效,比如在未映射的驱动器上。 
 
IOException
 该文件已打开。 
 


建议楼主好好看看出现的异常信息,确定异常错误的类型。

#2


file  如果这个不是文件路径,建议把它写成文件的实际路径。比如:C:\

#3


try
{
  ....
}
catch(Exception e)
{
   Response.Write(e.Message);
}

#4


异常信息中应该有原因。

#5


引用 1 楼 fgq841103 的回复:
FileInfo的OpenRead()方法可能会抛出一下三种类型的异常: 
UnauthorizedAccessException 
path 为只读,或者是一个目录。 

DirectoryNotFoundException 
指定的路径无效,比如在未映射的驱动器上。 

IOException 
该文件已打开。 



建议楼主好好看看出现的异常信息,确定异常错误的类型。 

#6


全部的异常信息我都写出来了~

#7


try
{}
catch(Exception e)

response.write(e.ToString);
}

#8


看到异常:

System.IO.IOException: The process cannot access the file 'D:\temp\StyleConvert\54_T_KT_01_testfile.xml' because it is being used by another process.

为什么不能访问这个文件呢?
怎样能查明不能访问的原因?
请大家指点……

#9


我这个文件是刚刚新建的文件,XslCompiledTransform 转换过来的。难道转换还没有完成?

#10


'D:\temp\StyleConvert\54_T_KT_01_testfile.xml' because it is being used by another process
这个文件有人在用了

#11


为什么不直接用
FileStream _fs =new FileStream(path,FimeMode.Open,FileAccept.Read)呢

#12


麻雀虽小

#13


文件路径正确不?

#14


找到原因了,因为XslCompiledTransform时候,用StreamWriter加载的文件,但是StreamWriter没有close掉,到这个进程不能访问这个文件,我太笨了,没看到~呵呵,谢谢!

#1


FileInfo的OpenRead()方法可能会抛出一下三种类型的异常:
UnauthorizedAccessException
 path 为只读,或者是一个目录。 
 
DirectoryNotFoundException
 指定的路径无效,比如在未映射的驱动器上。 
 
IOException
 该文件已打开。 
 


建议楼主好好看看出现的异常信息,确定异常错误的类型。

#2


file  如果这个不是文件路径,建议把它写成文件的实际路径。比如:C:\

#3


try
{
  ....
}
catch(Exception e)
{
   Response.Write(e.Message);
}

#4


异常信息中应该有原因。

#5


引用 1 楼 fgq841103 的回复:
FileInfo的OpenRead()方法可能会抛出一下三种类型的异常: 
UnauthorizedAccessException 
path 为只读,或者是一个目录。 

DirectoryNotFoundException 
指定的路径无效,比如在未映射的驱动器上。 

IOException 
该文件已打开。 



建议楼主好好看看出现的异常信息,确定异常错误的类型。 

#6


全部的异常信息我都写出来了~

#7


try
{}
catch(Exception e)

response.write(e.ToString);
}

#8


看到异常:

System.IO.IOException: The process cannot access the file 'D:\temp\StyleConvert\54_T_KT_01_testfile.xml' because it is being used by another process.

为什么不能访问这个文件呢?
怎样能查明不能访问的原因?
请大家指点……

#9


我这个文件是刚刚新建的文件,XslCompiledTransform 转换过来的。难道转换还没有完成?

#10


'D:\temp\StyleConvert\54_T_KT_01_testfile.xml' because it is being used by another process
这个文件有人在用了

#11


为什么不直接用
FileStream _fs =new FileStream(path,FimeMode.Open,FileAccept.Read)呢

#12


麻雀虽小

#13


文件路径正确不?

#14


找到原因了,因为XslCompiledTransform时候,用StreamWriter加载的文件,但是StreamWriter没有close掉,到这个进程不能访问这个文件,我太笨了,没看到~呵呵,谢谢!