C#读取完全锁定的文本文件或读取if语句外的输出

时间:2017-04-15 11:35:28

标签: c# c++

这个问题已被问过很多次,但我不确定我是否找到了正确的答案,即“这是不可能的”。每当我听到不可能的事情,我都不确定这是不是真的。我的意思是必须有一个解决方案。

所以这是我的事。我正在开发一个C#应用程序,它在某些时候应该读取.txt文件以在我的代码中使用。问题是C ++文件不断写入此文件。我没有这个项目的来源。

根据我的理解,即使文件被锁定,也有几种方法可以读取文件。问题是我尝试了所有这些。 (使用ReadWrite,Read,Write,Delete等)。似乎没有任何成功。看起来文件已被锁定。

所以我的问题再一次,是否真的有可能没有办法读取文本文件,如果它被其他我没有来源的应用程序完全锁定?没有办法吗?

如果没有,则有以下内容。应用程序本身打印出我想从txt文件中读取的完全相同的信息。所以我想为什么不直接从应用程序中读取它。问题是虽然我不确定如何在“if”声明之外做到这一点。

例如我的代码是:

bb

我以后想做的是:

cc

从来没有这样做是不可能的,因为“名称'编译器'在当前上下文中不存在”。

不可能丢失IF声明。任何解决方案?

提前致谢。

2 个答案:

答案 0 :(得分:2)

“如果文本文件被其他应用程序完全锁定,则无法读取文本文件” - 取决于正在使用的操作系统和文件系统。您没有告诉我们您使用的是什么,我们如何回答?有些系统使用内核强制执行的强制文件锁,有些只使用咨询锁,有些系统可以同时使用。

在任何情况下,你都会问“是否可能” - 嗯,在极端情况下;如果你绕过操作系统并直接操作磁盘上的原始数据,那么它当然是可能的 - 很难;当然,但可能。 如果你想保持在操作系统的漂亮世界中,那么它取决于(如上所述)操作系统和文件系统以及所使用的文件锁的类型。

答案 1 :(得分:1)

compilerif (wname.Length)语句的范围内定义。 带有错误的行显示在该范围之外,因此您会收到编译错误。

定义compiler外部或if语句,然后您将在另一行的范围内。但是,如果你没有在if语句之外初始化它,那么在使用之前你需要检查它是否为null,否则你会得到NullReferenceException

有关scopes in C#

的更多内容