将SaveFileDialog替换为代码保存
本文关键字:代码 保存 替换 SaveFileDialog | 更新日期: 2023-09-27 18:03:48
我有这样的代码保存bin文件,但用户必须选择文件
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "Binary File (*.bin)|*.bin";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
Question.PersistObject(questions, myStream);
myStream.Close();
}
}
但是我想在代码中选择file,如果文件名不存在,那么创建它。如何在myStream
中设置该文件?
将所有与OpenFileDialog
相关的逻辑替换为File.Open
:
using (var myStream = File.Open(someFilePath, FileMode.OpenOrCreate))
{
Question.PersistObject(questions, myStream); // do something with the stream
}
如果文件存在,OpenOrCreate
文件模式将打开该文件,如果文件不存在,则创建该文件。
using
语句将为您关闭流。
一种选择是有一个基本名称并附加一个数字:
string templateName = "myfile{0}.bin";
string finalName;
int count = 0;
do {
finalName = String.Format(templateName, count++);
} while (File.Exists(finalName);
或者,如果您不关心名称,则使用Path。GetTempFileName
然后将该名称传递给StreamWriter:
using (StreamWriter writer = new StreamWriter(finalName))
{
// Write stuff
}