C#为什么System.IO.File.Exists会出现错误?

时间:2013-10-29 05:03:45

标签: c# visual-studio-2012

string profile = "\\" + txtProfileLoad.Text + ".txt";
profile = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + profile;

变量配置文件正在接收正确的文件路径,但是当我运行它时,File.Exists每次都会出现错误。

        if (System.IO.File.Exists(profile) == true)
        {
            System.IO.StreamReader profileReader;
            profileReader = new System.IO.StreamReader(profile);

            do
            {
                profileLevel = profileLevel + profileReader.ReadLine() + "\r\n";
            } while (profileReader.Peek() != -1);

            loadName(profileLevel);

            wordBeingUsed.finalWord = loadedName;

            Close();
        }
        else
        {
            MessageBox.Show("Invalid file name. Please try again.");
        }

没有任何权限阻止它查看文件。 任何帮助都将不胜感激。这让我发疯了。

3 个答案:

答案 0 :(得分:2)

这是您尝试阅读的预先存在的文件吗?或者这是您希望创建的新文件? txtProfileLoad.Text内的价值是什么,问题最有可能发生在这个属性中。

运行完整性检查:

var profile = "mytestfile.txt";
var myFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), profile);
File.WriteAllText(myFile, "Testing file write");

if (File.Exists(myFile))
{
  // Access works.
}
else
{
  //Didn't work
}

如果上面的代码有效,那么您从txtProfileLoad.Text创建的名称很可能与驱动器上的实际文件不同。另一方面,如果这是一个尚不存在的文件;当然,当你检查Exists时它会返回false。

答案 1 :(得分:0)

您可以使用字符串变量并将文件名传递给它:

string tempFile = txtProfileLoad.Text;
string profile = @"C:\temp\tempfile.txt";

另请查看您是否可以使用文件open方法而不是File.Exist

答案 2 :(得分:0)

根据MSDN

  如果调用者具有所需权限并且路径包含现有文件的名称,则

true ;否则, false 。这种方法也   如果path为Nothing,无效路径或零长度,则返回false   串。如果调用者没有足够的权限来读取   指定的文件,不抛出异常,方法返回false   不管路径的存在。

您是否尝试过以管理员身份运行?尝试在Visual Studio图标上“右键单击”并选择“以管理员身份运行”,然后查看是否仍然遇到相同的行为。