我有一个XDocument类,其中已经创建了XML内容。我基本上想要打开一个SaveFileDialog,让用户选择一个文件夹(不是文件),将内容保存为.xml文件。
我遇到了一些困难:
a)如何使用SaveFileDialog提示用户选择文件夹?我只能用它来让用户选择一个文件。
b)如何从SaveFileDialog中提取所选路径?
c)一旦我有了路径,我该如何保存XDocument的内容?有一个名为Save的方法需要一个Stream - 如何使用路径构建流? (这可能是一个基本问题,我几乎没有IO经验)
答案 0 :(得分:4)
a)您不想选择文件夹,而是选择文件名(保存* 文件 *对话框)
b)SaveFileDialog.FileName
c)查看不同的重载:你有XDocument.Save(string fileName)。不需要有流,你可以有一个fileName(哦,你在SaveFileDialog中得到它)
编辑:您的意思是用户无法更改文件的名称? 然后
a)FolderBrowserDialog
b)FolderBrowserDialog.SelectedPath
c)XDocument.Save(FolderBrowserDialog.SelectedPath +“/”+ THENAMEOFYOURFILETHATUSERCANTCHANGE)
(编辑2 :C中的Path.Combine更优雅))。
答案 1 :(得分:1)
A& B(来自重复问题的示例代码):
C(保存XDocument
的最小代码):
XDocument document = new XDocument();
document.Add(new XElement("my_root"));
// Save(): there are 6 overloads; the 2nd one takes a path
document.Save(filePathFromSaveDialog);
答案 2 :(得分:0)
确保将SaveFileDialog添加到表单并签名到FileOk事件(可以通过SaveFileDialog的属性完成),然后下面的代码应该适合您:
private void button1_Click(object sender, EventArgs e)
{
// When user clicks button, show the dialog.
saveFileDialog1.ShowDialog();
}
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
// Get file name.
string name = saveFileDialog1.FileName;
// Write to the file name selected.
xDocumentYouHave.Save(name);
}