文件共享读写不起作用 (C#.NET)

2023-12-06

我正在使用 C# 的十六进制编辑器控件,可以找到源代码和二进制文件here.

使用它时的一个问题是,如果在十六进制编辑器和另一个程序中加载文件,则另一个程序无法保存该文件,因为它已经被另一个进程使用。

所以我询问了控件的作者,他告诉我将 FileByteProvider 和 DynamicFileByteProvider 类中的 File.Open 方法中的 FileShare 参数设置为 ReadWrite(最初只是 Read)即可解决此问题。所以我这样做了,但它仍然不起作用(同样的错误)。将其设置为“只写”也不起作用,但将其设置为“只读”和“无”都可以。这些文件在任何程序(例如记事本)中都存在相同的问题。它们没有设置为只读或其他任何东西,所以我不知道为什么它不起作用。

我在这里缺少什么吗?


问题可能出在其他程序上 - 如果它尝试打开文件以进行独占访问(不共享),则无论如何your程序已打开该文件 - 它将失败。


每当程序尝试打开文件时,您都需要指定 FileAccess 和 FileShare 参数(如果未显式传递,则采用默认值)。

然后 Windows 要做的就是检查所有现有的打开文件句柄,并确定它们是否兼容。因此,它将您的 FileAccess 参数与其他人的 FileShare 参数进行比较 -你可以做其他人都说他们乐意做的事吗?然后它执行相反的检查 - 您的 FileShare 参数是否与其 FileAccess 参数匹配? -他们正在做你乐意做的事情吗?只有两项检查都通过后,您的特定开放请求才能获得批准。

你可以使用类似的东西过程监控器实际观察发出的 Win32 调用创建文件查看每个进程实际上在做什么。


记事本可以打开以读/写方式共享的文件,但无法写回该文件。示例程序:

using System.IO;

namespace ConsoleApplication2
{
    class Program
    {

        static void Main(string[] args)
        {
            var fs = new FileStream(@"C:\Bar.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
            fs.Write(System.Text.Encoding.ASCII.GetBytes("abc"),0,3);
            fs.Flush();
            fs.Close(); //<-- Breakpoint here
        }
    }
}

设置给定的断点,运行程序。当遇到断点时,打开记事本,然后用它打开 C:\Bar.txt。一切安好。向文件添加更多文本并点击“保存”。您会收到一条错误消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件共享读写不起作用 (C#.NET) 的相关文章

  • 与其他格式相比,Apache Parquet 格式有哪些优缺点?

    Apache Parquet 的一些特性是 自我描述 柱状格式 独立于语言 与 Apache Avro 序列文件 RC 文件等相比 我想了解一下这些格式 我已经读过 Impala 如何使用 Hadoop 文件格式 https www clo
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 处理中的新窗口

    昨天我发现以下代码用于在处理中创建第二个窗口 import javax swing JFrame PFrame f secondApplet s void setup size 600 340 void draw background 25
  • ffmpeg CLI 设置 -r 30 如果输入 => 30 fps,否则 -r 如果 < 30 fps 则采用输入 fps

    我发布了我的原来的问题在这里 Tried 建议的解决方案 但这并不能解决我的问题 这就是我所做的 下载这个视频来自 Youtube 作为测试 使用 ffprobe 给出 Stream 0 0 Video h264 High yuv420p
  • 更改图例中值的顺序但保留颜色

    我正在构建一个绘图 并且对 ggplot 定义的默认颜色顺序非常满意 例如 library ggplot2 data mtcars mtcars brand lt gsub row names mtcars ggplot mtcars ae
  • 使用 JavaScript 清除所有 cookie

    如何使用 JavaScript 删除当前域的所有 cookie function deleteAllCookies const cookies document cookie split for let i 0 i lt cookies l
  • 在模块窗口中,我可以看到加载的 dll 以相同的路径出现两次

    你能告诉我原因是什么吗 它是否从同一个位置加载了两次 我一直认为这与在同一个 dll exe 中同时拥有本机代码和托管代码有关 我在我的应用程序中看到了同样的情况 其中本机 C 模块加载托管许可证处理程序模块
  • Python 类变量或一般类变量

    来自 深入Python 类属性可以通过直接引用来获得 类并通过该类的任何实例 类属性可以用作类级常量 但它们是 不是真正的常数 您也可以更改它们 所以我在 IDLE 中输入 IDLE 2 6 5 gt gt gt class c count
  • 如何在Event Handler中获取HttpContext

    我试图在 MOSS 文档库的事件处理程序中获取 HTTPContext 但我所拥有的只是 HTTPContext Current 的空值 我在列表上执行相同的操作并返回 HTTPContext 有没有办法获取文档库中的HTTPContext
  • 尝试将 LinkedIn 集成到 iPhone 应用程序中

    我已经从以下位置下载了源代码https github com ResultsDirect LinkedIn iPhone 演示工作正常 并尝试在我的应用程序中使用 我已经按照此处提到的所有步骤进行了操作post 但我收到错误 OBJC CL
  • ConfigurationModule 传递到模块和上下文 - DotNet Core

    所以我尝试使用 Autofac DI 通过堆栈传递我的配置 json 文件 我的主要功能如下 static void Main string args Console WriteLine Starting Add the configura
  • 测试 UNC 路径“可访问性”

    我的程序需要访问某个 UNC 路径 但该路径是跨域的 因此根据运行程序的计算机 它可能有也可能没有默认凭据 通常 用户只需打开资源管理器并输入 UNC 或 IP 地址即可获得登录提示 此时他们可以输入共享所在域的适当凭据 是否有一种 干净
  • Firebase 根据日期按分数排序

    我正在尝试添加每月记分板 但这对我来说似乎有点困难 我不知道如何为某些列表或数组获取特定值 与日期一样 仅包含 2017 年 1 月 9 日值的日期 如果我能做到这一点 那么我想我可以按价值对它们进行排序 FirebaseDatabase
  • 如何在调用正文中使用 csv 文件来调用经过 TensorFlow 训练的 SageMaker 模型? [复制]

    这个问题在这里已经有答案了 我已在 AWS SageMaker 上部署了 TensorFlow 模型 并且希望能够使用 csv 文件作为调用正文来调用它 该文档说关于创建一个serving input function就像下面这个 def
  • jQuery 异常处理

    有什么方法可以捕获 javascript 中任何未捕获的异常吗 我的意思是 我所有的 危险 代码都在 try catch 块中 但是我没有明确处理的异常怎么办 我正在使用 jQuery 我的主要 javascript 文件以以下内容开头 d
  • Linux 如何将文件识别为某种文件类型,以及如何以编程方式更改它?

    我正在用 java 创建一个程序 该程序读取文件的输入流 通过根据密码更改字节数来对其进行加密 并创建一个新的加密文件 例如 我创建了一个测试文件 其中包含以下内容 This is a test to see if the encrypte
  • 将 Gridview 导出到 Excel 时删除复选框

    我有一个 gridview 需要导出到 Excel 我已设法从行中删除复选框 但不知道如何从标题中删除以及完全删除复选框列 感谢帮助
  • SQL查询删除两个不同数据库的3个表内连接中的重复值

    我正在使用 SQL Server 数据库 并且编写了以下查询 SELECT AM Martin dbo CpCore Site Latitude AM Martin dbo CpCore Site Longitude AM Martin d
  • Jquery - 链接外部 .js 文件不起作用

    由于某种原因 我链接到的外部 js 文件无法正常工作 我像这样链接到它 我已经使用一个简单的内联脚本测试了 jquery 以便在单击时隐藏一段文本 以便 jquery 库存在并工作 jquery js 文件与调用它的 index php 文
  • Matplotlib 默认情况下不会显示居中的多边形图?

    对于迄今为止我见过的所有类型的图 matplotlib没有时会自动居中xlim ylim 给出了值 例子 import matplotlib pyplot as plt A pts 162 5 137 5 211 0 158 3 89 6
  • C# 将列表中的对象转换为另一个对象

    是否可以将对象列表分配给另一个将其作为构造函数的对象列表 Eg public class PersonORM public PersonORM Person p convert public int PersonId get set Oth
  • 文件共享读写不起作用 (C#.NET)

    我正在使用 C 的十六进制编辑器控件 可以找到源代码和二进制文件here 使用它时的一个问题是 如果在十六进制编辑器和另一个程序中加载文件 则另一个程序无法保存该文件 因为它已经被另一个进程使用 所以我询问了控件的作者 他告诉我将 File