2

次のコードでは:

if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat"))
{
    File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);
}
else
{
    File.Create(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat");
    File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden);
    File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);
}

何らかの理由で、このコードを初めて実行すると、ファイルは正常に作成されますが、書き込みは行われず、アプリを終了して再実行するまで作成されません。2 回目、3 回目などの実行は問題なく動作しますが、イニシャルだけがおかしいです。何か案は?私はちょうど何かをテストしていたので、ファイル名とディレクトリはランダムなので、何かをテストしている場合は、それらを好きなものに変更できるはずです。前もって感謝します

4

4 に答える 4

7

File.Create の後に.Close ()を配置する必要があります

File.Create(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat").Close();

詳細については、MSDN File.Createを参照してください。

またはこれを行うことができます

File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);         
File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden);

詳細については、MSDN File.WriteAllTextを参照してください。

于 2012-01-09T08:08:10.883 に答える
6

File.Createストリームをファイルに戻している場合は、再度開く前にファイルを閉じる必要があります。

于 2012-01-09T08:05:52.287 に答える
4

File.AppendAllText() は、ファイルがまだ存在しない場合にファイルを作成するため、次のようにすることができます。

File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);         
File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden); 

それが役立つかどうかを確認してください:)

于 2012-01-09T08:06:29.620 に答える
3

ファイルの作成をスキップします。AppendAllText メソッドは、ファイルが存在しない場合でもファイルを作成します。file.create がファイル ロックまたはファイル ハンドルを開いたままにする可能性があると推測しています。

于 2012-01-09T08:06:20.133 に答える