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

変数プロファイルは正しいファイル パスを受け取りますが、実行すると File.Exists が毎回 false になります。

        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.");
        }

ファイルの表示を妨げる​​権限はありません。これについての助けをいただければ幸いです。それは私を夢中にさせてきました。

4

3 に答える 3

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 が返されます。

于 2013-10-29T05:53:01.503 に答える
0

文字列変数を使用して、ファイル名を渡すことができます。

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

の代わりに file open メソッドを使用できるかどうかも確認してくださいFile.Exist

于 2013-10-29T05:33:55.090 に答える
0

MSDNによると:

呼び出し元に必要なアクセス許可があり、パスに既存のファイルの名前が含まれている場合はtrue 。それ以外の場合はfalse。このメソッドは、path が Nothing、無効なパス、または長さ 0 の文字列の場合にも false を返します。呼び出し元が指定されたファイルを読み取るための十分な権限を持っていない場合、例外はスローされず、メソッドはパスの存在に関係なく false を返します。

管理者として実行してみましたか?Visual Studio アイコンを「右クリック」して「管理者として実行」を選択し、同じ動作が引き続き発生するかどうかを確認してください。

于 2013-10-29T05:43:56.273 に答える