5

このコードを使用すると

File.AppendAllText("C:/Users/Michael/Documents/Visual Studio 2010/Projects/PuzzleGame/PuzzleGame/PuzzleGameContent/player.TXT", "hi");

ファイルが保存され、末尾に「hi」が追加されます。ただし、次のようなことをすると:

File.AppendAllText("player.TXT", "what is good?");

ファイルには「何がいいの?」がありません。それの終わりに。「player.TXT」ファイル名のみを使用してファイルを正常に読み取ることができますが、それだけを使用してファイルに書き込むことはできません。誰でも私を助けることができますか?

4

4 に答える 4

8

作業ディレクトリは、.exe がある場所です (変更しない限り)。ご覧のとおり、コンパイルすると、exe は bin フォルダーに配置されるため、ソースではなく、player.txt がそこにある必要があります。

edit : player.txt に追加しているに違いありません。それを読んだので、bin フォルダーに新しいものを作成したため、正常に機能しました。そうでなければ、 read は機能しませんでした。bin フォルダーに移動して player.txt を削除すると、readfile が機能しなくなります。

于 2013-10-23T20:56:17.087 に答える
3

どちらの形式も完全に有効です。可能性の高いシナリオは、パスを指定しないとデフォルトで現在のディレクトリになるため、2 番目のバージョンが単に別の場所にあるファイルに書き込んでいるということです。

パスを含めない場合は、現在のディレクトリがファイルへのアクセスに有効であることを確認する必要があります。

于 2013-10-23T20:57:49.463 に答える
2

ほとんどの場合、ファイル システムには 2 つのファイルがあります。1 つは最初の例で明示的に定義されたディレクトリにあり、もう 1 つは 2 番目の例で実行可能ファイルが実行されている場所です。これは、メソッド呼び出しのパラメーターで明示的なパスが定義されていないためです。

MSDN から:

文字列とファイル パスを指定すると、このメソッドは指定されたファイルを開き、ファイルの末尾に文字列を追加してから、ファイルを閉じます。例外が発生した場合でも、ファイル ハンドルはこのメソッドによって閉じられることが保証されます。

このメソッドは、ファイルが存在しない場合は作成しますが、新しいディレクトリは作成しません。したがって、パス パラメータの値には既存のディレクトリが含まれている必要があります。

.

于 2013-10-23T20:59:21.423 に答える
0

問題は、 AppendAllText が、ファイルがまだ存在しない場合にファイルを作成するメソッドであることです。したがって、不完全なパスを使用すると、ベース ディレクトリに新しいファイルを作成するか、既存のファイルに追加するかが不明になります。何らかの理由でフル パスを使用できない場合は、次のような方法で現在の作業ディレクトリを取得できます。

File.AppendAllText(System.Environment.CurrentDirectory + "player.TXT", "what is good?");

現在のディレクトリが正しい限り、最初の作業例と同じように機能します。

于 2013-10-23T21:00:12.997 に答える