gpt4 book ai didi

c# - System.IO.File.OpenRead 工作但 System.IO.FileStream 不工作?

转载 作者:行者123 更新时间:2023-12-02 17:35:14 28 4
gpt4 key购买 nike

在我的应用程序中,我正在使用 System.IO.FileStream(文件路径)读取 .PDF 文件。当文件夹具有本地用户权限时,这工作正常。当我从文件夹中删除本地用户权限时,这会导致访问被拒绝错误。我正在使用此代码...

System.IO.FileStream objFStream = new System.IO.FileStream(strPath, System.IO.FileMode.Open);
byte[] bytRead = new byte[(int)objFStream.Length];
objFStream.Read(bytRead, 0, (int)objFStream.Length);
objFStream.Close();
objFStream.Dispose();

一旦我将 System.IO.FileStream 替换为 System.IO.File.OpenRead(strPath) 它就会起作用。替换代码是...

System.IO.FileStream objFStream = System.IO.File.OpenRead(strPath);
byte[] bytRead = new byte[(int)objFStream.Length];
objFStream.Read(bytRead, 0, (int)objFStream.Length);
objFStream.Close();
objFStream.Dispose();

我想知道这有什么区别?如果有人知道请帮助。

最佳答案

File.OpenRead方法在打开文件时使用 FileAccess.Read。区别在于:

return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);

documentation说到你正在使用的构造函数:

For constructors without a FileAccess parameter, if the mode parameter is set to Append, Write is the default access. Otherwise, the access is set to ReadWrite.

所以我猜你没有写文件的权限。这就是它抛出异常的原因。您可以通过尝试使用 ReadWrite 访问权限打开流来验证这一点:

new FileStream(strPath, FileMode.Open, FileAccess.ReadWrite);

关于c# - System.IO.File.OpenRead 工作但 System.IO.FileStream 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27397370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com