C# 读取完全锁定的文本文件或读取 if 语句外部的输出
C# Read text file that is fully locked or read output outside if statement
这个问题已经被问了很多次,但我不确定我是否找到了正确的答案,那就是"这是不可能的"。每次我听到某些事情是不可能的,我都不确定它是否属实。我的意思是必须以某种方式找到解决方案。
这就是我的事情。我正在开发一个 C# 应用程序,该应用程序在某些时候应该读取一个.txt文件以在我的代码中使用。问题是C++文件不断写入此文件。我没有这个项目的来源。
据我了解,即使文件被锁定,也有几种方法可以读取文件。问题是我都试过了。(使用读写、读取、写入、删除等)。似乎什么都没有成功。看起来文件已被锁定。
所以我的问题再次是,如果文本文件被我没有源代码的其他应用程序完全锁定,是否真的有可能无法读取文本文件?难道就没有办法吗?
如果没有,则有以下几种情况。应用程序本身打印出我要从 txt 文件中读取的完全相同的信息。所以我想为什么不直接从应用程序中读取它。问题是,我不确定如何在"if"语句之外做到这一点。
例如,我的代码是:
if (wname.Length )
{
Process compiler = new Process();
compiler.StartInfo.FileName = fn;
compiler.StartInfo.WorkingDirectory = wd;
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.StartInfo.CreateNoWindow = true;
compiler.Start();
}
我稍后想做的是:
string result = compiler.StartInfo.ReadToEnd();
这是不可能的,因为"'编译器'这个名字在当前上下文中不存在"。
丢失 IF 语句是不可能的。有什么解决方案吗?
提前谢谢。
如果文本文件被其他应用程序完全锁定,是否真的有可能无法读取" - 取决于正在使用的操作系统和文件系统。您不告诉我们您在使用什么,那么我们如何回答?有些系统使用内核强制的强制文件锁,有些系统只使用咨询锁,有些系统可以同时使用两者。
无论如何,你问它是否"可能"——好吧,在极端情况下;如果你绕过操作系统并直接操作磁盘上的原始数据,那么当然是可能的——很难;当然,但有可能。 如果您想留在操作系统的美好世界中,那么这取决于(如上所述)操作系统和文件系统以及使用的文件锁类型。
compiler
是在if (wname.Length)
语句的作用域中定义的。 带有错误的行出现在该范围之外,因此您会收到该编译错误。
在外部或 if 语句中定义compiler
,然后您将在另一行的范围内使用它。但是,如果您没有在 if 语句之外初始化它,那么您需要在使用之前检查它是否为 null,否则您将获得NullReferenceException
有关 C# 作用域的更多信息
- 如果语句错误地读取字符串,则始终在第一个条件返回
- 输入未正确读取条件语句
- C# 读取完全锁定的文本文件或读取 if 语句外部的输出
- 是否可以将结构与条件语句完全相同的字符串转换为可以读取和操作的语句?
- 控制台将继续关闭,而不是读取 if 语句中的字符串
- C++转换为 C# 读取文本以生成语句
- 如果语句未正确读取字符变量
- 如果语句内部循环不读取完全正确的代表显示错误
- 当我通过删除临时节点来释放内存时,我会得到读取访问违规行为.但是只有当我返回错误语句时
- 不会让我在 IF 语句(家庭作业)之后读取用户输入
- 文件读取内/外,两个读语句(逻辑?
- c++ 读取左 IF 语句条件和右语句条件
- 返回传入的临时值并在同一语句中读取它是否安全
- C++ if 语句不起作用(不会读取内存)
- c++访问器mutator未读取cin-switch case语句
- for 循环的问题,它同时读取 if 和 else if 语句
- While语句无法读取正确的字符输入
- c++用条件语句读取文本文件
- POCO C++SAX解析器:如果xml文档编码是ANSI,那么下一条语句不是读取并抛出编码错误异常
- c++不读取IF/Else语句