以只读方式打开文件

2023-12-07

目前,这就是我打开文件来读取它的方式:

 using (TextReader reader = new StreamReader(Path.Combine(client._WorkLogFileLoc, "dump.txt")))
{
    //do stuff
}

如何以只读模式打开文件,以便如果另一个进程同时打开该文件,我的程序仍然可以读取它。


典型的问题是其他进程打开文件进行写入。所有标准 File 方法和 StreamReader 构造函数都使用 FileShare.Read 打开文件。这是行不通的,它拒绝写入共享。您不能拒绝写入,另一个进程是第一个进程并获得了写入权限。因此您将被拒绝访问。

您必须使用 FileShare.ReadWrite,如下所示:

var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
using (var sr = new StreamReader(fs))
{
    // etc...
}

请注意,您仍然会遇到一个棘手的问题,您正在读取一个写了一半的文件。另一个进程在随机时间点将数据刷新到文件中,您很可能只读取半行文本。 YMMV。

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

以只读方式打开文件 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 如何在silverstripe数据扩展中自动发布图像

    我试图将上传字段添加到自定义数据扩展并让图像字段正常工作 但是 我上传的图像仍处于概念模式 我必须转到 文件 选项卡才能发布它 我尝试使用 Silverstripe 文档中提供的代码 但这似乎只适用于常规页面 我发现了一个和我类似的问题 如
  • 在 .htaccess 中使用自定义环境变量

    我需要这样的东西 SetEnv foo bar baz RewriteEngine On RewriteCond HTTP HOST foo RewriteRule http www foo 1 L UPD 我做了如下 SetEnv HOS
  • Struts 2 文件上传 - 空指针异常

    我正在尝试结合使用 Struts2 和 Spring 来上传文件 但是 不知怎的 在到达我的动作课 我的文件之后 filename和文件内容类型都出来了null 我尝试寻找问题所在 但没有结果 下面是我的文件上传的代码 index jsp
  • 如何使用 Mockito 和 JUnit 检查方法中的 if 语句?

    我有我应该测试的方法 代码 当然有些部分被删掉了 public class FilterDataController public static final String DATE FORMAT yyyy MM dd Autowired p
  • 在docker下安装时可以回答对话框问题吗?

    是否可以以某种方式回答使用 apt get 安装某些软件包时以对话框形式出现的问题 例如 我正在尝试设置一个包含以下内容的容器mail stack delivery包装内含 FROM ubuntu RUN apt get install y
  • 如何在android中使用sax解析器从xml读取imageUrl在网格视图中显示图像

    我是安卓新手 我想创建一个应用程序来从 URL 读取 XML 文件并使用图像的 ImageUrl 在网格视图中显示图像 感谢您的回答 但我可以从 url 读取 xml 文件 但我需要 xml imageUrl 是否存在 以便在网格视图中显示
  • 计算原始输入中的元音数

    我有一个家庭作业问题 要求通过原始输入读取字符串并计算字符串中有多少个元音 这是我到目前为止所拥有的 但我遇到了一个问题 def vowels vowels a e i o u count 0 string raw input Enter
  • 运行“sudo pip”有哪些风险?

    偶尔我会遇到评论或回应该状态强调运行pip under sudo是 错误 或 坏 但在某些情况下 包括我设置一堆工具的方式 它要么更简单 要么甚至有必要以这种方式运行 跑步有哪些风险pip under sudo 请注意 这与以下问题不同th
  • 在定义整个映射之前,如何引用映射中的变量?

    我将从我的代码开始 因为它应该更容易理解我想要做什么 function get color color lightness return map get map get colors color lightness colors green
  • Thread.MemoryBarrier 和简单属性的锁区别

    对于以下场景 有什么区别吗关于使用之间的线程安全性 结果和性能MemoryBarrier private SomeType field public SomeType Property get Thread MemoryBarrier So
  • 在 Python 中使用 pynput 检查特定键

    dpressed 0 def on press key if key d global dpressed dpressed 1 logging info D s dpressed 当我运行此代码并按 d 时 没有任何反应 我怀疑这是因为在检
  • Python - isnull().sum() 与 isnull().count()

    所以我目前正在完成泰坦尼克号数据集的教程 https www kaggle com c titanic data 现在我正在尝试一些可能相关的新事物 The info for it is There are 891 entries red
  • 如何在java中进行链式检查

    考虑一个像下面这样的类 public class MyClass private Integer myField private Result result more global variables public MyResult che
  • 尝试使用 Nunit 运行多个 Selenium Webdriver 测试失败

    我想知道是否有人可以在这里帮助我 我将 selenium Webdriver 与 C 和 Nunit 结合使用 当我尝试运行多个测试时 出现以下错误 OpenQA Selenium WebDriverException 意外错误 Syste
  • 实时更新 MySQL 数据

    我有以下代码 它工作得很好 我只是想将其转换为实时状态 以便它每 10 秒左右更新一次 而无需刷新页面 我猜我需要使用 AJAX 或 Jquery 但我缺乏这方面的知识如何做到这一点 VIA ON THE PAGE
  • 将承载令牌传递给不同的 APP_INITIALIZER 以从 Angular 应用程序中的服务器加载配置

    我经历了几个问题 比如1 2但我不知道如何让我的应用程序运行 Problem 当我第一次登录时 我没有得到Bearer token因此我的SettingConfigService失败了401 如果我刷新页面 我会从以下位置获取令牌this
  • 将转储文件导入到 oracle 11gr2 时出现错误

    将转储文件导入到 oracle 11gr2 时出现此错误 请提出解决此问题的方法 Warning the objects were exported by D7IDMP not by you import done in WE8MSWIN1
  • 如何将 Rust 数组转换为指针?

    我在谷歌上找不到简单的东西 如何将简单的 Rust 数组转换为指针 如何获取指向的指针 u8 3 我尝试做as mut u8但这是行不通的 Use as ptr or as mut ptr fn main let a u8 3 1 2 3
  • 重载集合[a, b] (a = b)

    我想重载 Mathematica 的 Set 函数 这对我来说太棘手了 请参阅下面的代码示例 我成功重载了其他函数 例如代码示例中的 Reverse 有什么建议么 In 17 ClearAll struct In 18 var1 struc
  • 以只读方式打开文件

    目前 这就是我打开文件来读取它的方式 using TextReader reader new StreamReader Path Combine client WorkLogFileLoc dump txt do stuff 如何以只读模式