我有一个包含XML内容的XDocument类。我基本上是想打开一个SaveFileDialog,让用户选择一个文件夹(而不是一个文件),将内容保存为.xml文件。
我在这样做时遇到了一些困难:
a)如何使用SaveFileDialog提示用户选择文件夹?我只能使用它让用户选择一个文件。
b)如何从SaveFileDialog中提取所选路径?
c)有了路径后,如何保存XDocument的内容?有一个名为Save的方法需要一个Stream --我该如何使用path构建流呢?(这可能是一个基本问题,我几乎没有IO经验)
发布于 2012-04-08 03:31:29
a)您不想选择文件夹,而是要选择文件名(保存*文件*对话框)
b) SaveFileDialog.FileName
c)看看不同的重载:你有XDocument.Save(string fileName)。不需要流,你可以有一个fileName (哦,你在SaveFileDialog中得到了它)
编辑:你的意思是用户不能更改文件的名称?然后
a) FolderBrowserDialog
b) FolderBrowserDialog.SelectedPath
c) XDocument.Save(FolderBrowserDialog.SelectedPath + "/“+ THENAMEOFYOURFILETHATUSERCANTCHANGE)
(EDIT 2:Path.Combine在c中更优雅)。
发布于 2012-04-08 03:31:49
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); 发布于 2012-04-08 03:33:13
确保您在表单中添加了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);
}https://stackoverflow.com/questions/10057609
复制相似问题