我正在尝试读取二进制文件,并且我一直在64位系统上出现错误,其中看起来该文件正在以写权限打开,因此当放入安全文件夹时会抛出错误(Program Files in 64位Windows)。我可以通过将包含要读取的文档的文件夹设置为只读来在我的系统(XP,32位)上复制此错误。
这是我正在使用的代码:
public static byte[] GetContentFromFile(string file)
{
try
{
FileStream stream = new FileStream(String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, file), FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
byte[] content = new byte[stream.Length];
reader.Read(content, 0, content.Length);
reader.Close();
stream.Close();
return content;
}
catch
{
return new byte[0];
}
}
有什么想法吗?
答案 0 :(得分:0)
将此文件放在AppData文件夹中?
了解抛出的确切异常可能会有所帮助。打开只读文件进行写入时抛出UnauthorizedAccessException,如果代码在没有权限以指定模式打开该文件的应用程序域中运行,则抛出SecurityException。因此,只有当您真正尝试写入只读文件时才会发生第一个,而如果用户或代码甚至无法读取它,则第二个会发生。
此外,只是在黑暗中拍摄,尝试指定FileShare值Read,这将允许其他线程/进程读取文件。默认值为None,它会锁定对文件的所有其他访问,如果Windows认为完全锁等同于写访问权,则可能会导致问题。