テキストファイルを保存する必要のあるコードを記述しました。ただし、プロジェクトルートに保存して、私だけでなく誰でもアクセスできるようにする必要があります。
問題のメソッドは次のとおりです。
private void saveFileToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
string fileName = Microsoft.VisualBasic.Interaction.InputBox("Please enter a save file name.", "Save Game");
if (fileName.Equals(""))
{
MessageBox.Show("Please enter a valid save file name.");
}
else
{
fileName = String.Concat(fileName, ".gls");
MessageBox.Show("Saving to " + fileName);
System.IO.File.WriteAllText(saveScene.ToString(), AppDomain.CurrentDomain.BaseDirectory + @"\" + fileName);
}
}
catch (Exception f)
{
System.Diagnostics.Debug.Write(f);
}
}
多くの人がAppDomain.CurrentDomain.BaseDirectory
には、アプリが保存された場所の動的な場所が含まれます。しかし、これを実行しても何も起こらず、ファイルも作成されません。
これを行う別の方法はありますか、それともまったく間違って使用していますか?
File.WriteAllText には2つのパラメーターが必要です。
1つ目はFileNameで、2つ目は書き込む内容です
File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + @"\" + fileName,
saveScene.ToString());
ただし、アプリケーションを実行しているユーザーがフォルダーにアクセスする権限を持っていない場合、現在のフォルダーへの書き込みが問題になる可能性があることに注意してください。 (そして、最新のOSではProgram Filesへの書き込みは非常に制限されています)。可能であれば、この場所を Environment.SpecialFolder enumで定義されている場所に変更します
また、パスを構築する必要がある場合は System.IO.Path class を使用することをお勧めします。非常に 'OS固有の'定数"\"
でパスを区切ります。
あなたの例では私は書くでしょう
string destPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,fileName);
File.WriteAllText(destPath, saveScene.ToString());
追加の+ @"\"
は必要ありません:
AppDomain.CurrentDomain.BaseDirectory + fileName
パラメータを置き換えます
saveScene.ToString()
そして
AppDomain.CurrentDomain.BaseDirectory + fileName
あなたのコードは:
private void saveFileToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
string fileName = Microsoft.VisualBasic.Interaction.InputBox("Please enter a save file name.", "Save Game");
if (fileName.Equals(""))
{
MessageBox.Show("Please enter a valid save file name.");
}
else
{
fileName = String.Concat(fileName, ".gls");
MessageBox.Show("Saving to " + fileName);
System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + fileName, saveScene.ToString());
}
}
catch (Exception f)
{
System.Diagnostics.Debug.Write(f);
}
}
あなたはFile.WriteAllText
で読むことができます ここ :
パラメーター
path Type: System.String The file to write to. contents Type: System.String The string to write to the file.
AppDomain.CurrentDomain.BaseDirectory
を使用する代わりに、次のように実行できます。
File.WriteLine("data\\Mytxt.txt", "Success!");
何も追加しない場合、ベースディレクトリが自動的に想定されます。