gpt4 book ai didi

.net - 无法打开另一个我的应用程序已打开的文件

转载 作者:可可西里 更新时间:2023-11-01 10:00:35 25 4
gpt4 key购买 nike

在 C++ WinAPI 应用程序中,我使用此代码打开文件

CreateFileW(path,FILE_APPEND_DATA,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

当此 C++ 应用程序打开该文件时,我正尝试使用此代码在 C# 应用程序中打开它以供阅读

var f = new StreamReader(path);

我收到 IOException“该进程无法访问该文件,因为它正被另一个进程使用”

我试过了

var fs = new FileStream(path, FileMode.Open,FileAccess.Read)

同样的结果。

我不明白为什么会这样。我在 C++ 应用程序的 CreateFile 中指定了 FILE_SHARE_READ。我用 C# 打开它进行阅读。它必须在 C# 应用程序中打开。我究竟做错了什么?同时notepad.exe可以打开这个文件

最佳答案

FileStream constructor您在 C# 应用程序中使用的文件使用 FileShare.Read 选项打开文件,相当于 FILE_SHARE_READ。

这意味着当您打开文件时,其他程序可以打开文件进行读取,但不能进行写入。但是您的 C++ 程序已经打开文件进行写入,因此您所请求的共享模式不可用,并且尝试打开文件失败。

相反,这样说:

var fs = 
new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)

关于.net - 无法打开另一个我的应用程序已打开的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422700/

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