这个问题已被问过很多次,但我不确定我是否找到了正确的答案,即“这是不可能的”。每当我听到不可能的事情,我都不确定这是不是真的。我的意思是必须有一个解决方案。
所以这是我的事。我正在开发一个C#应用程序,它在某些时候应该读取.txt文件以在我的代码中使用。问题是C ++文件不断写入此文件。我没有这个项目的来源。
根据我的理解,即使文件被锁定,也有几种方法可以读取文件。问题是我尝试了所有这些。 (使用ReadWrite,Read,Write,Delete等)。似乎没有任何成功。看起来文件已被锁定。
所以我的问题再一次,是否真的有可能没有办法读取文本文件,如果它被其他我没有来源的应用程序完全锁定?没有办法吗?
如果没有,则有以下内容。应用程序本身打印出我想从txt文件中读取的完全相同的信息。所以我想为什么不直接从应用程序中读取它。问题是虽然我不确定如何在“if”声明之外做到这一点。
例如我的代码是:
bb
我以后想做的是:
cc
从来没有这样做是不可能的,因为“名称'编译器'在当前上下文中不存在”。
不可能丢失IF声明。任何解决方案?
提前致谢。
答案 0 :(得分:2)
“如果文本文件被其他应用程序完全锁定,则无法读取文本文件” - 取决于正在使用的操作系统和文件系统。您没有告诉我们您使用的是什么,我们如何回答?有些系统使用内核强制执行的强制文件锁,有些只使用咨询锁,有些系统可以同时使用。
在任何情况下,你都会问“是否可能” - 嗯,在极端情况下;如果你绕过操作系统并直接操作磁盘上的原始数据,那么它当然是可能的 - 很难;当然,但可能。 如果你想保持在操作系统的漂亮世界中,那么它取决于(如上所述)操作系统和文件系统以及所使用的文件锁的类型。
答案 1 :(得分:1)
compiler
在if (wname.Length)
语句的范围内定义。
带有错误的行显示在该范围之外,因此您会收到编译错误。
定义compiler
外部或if语句,然后您将在另一行的范围内。但是,如果你没有在if语句之外初始化它,那么在使用之前你需要检查它是否为null,否则你会得到NullReferenceException