所以,我制作了一个小型WPF应用程序,允许您模板文件夹/文件结构并保存/加载它们。
最初安装应用时,它在根安装文件夹中有一个Template文件夹。我开始保存并加载模板(使用SaveFileDialog和OpenFileDialog,然后写入/解析到/从xml)。这很好。
然后我想测试一下,如果我要删除那个文件夹,首先通过这些按钮打开哪个目录(因为即使是在全新安装时它也会进入最后打开的目录,我想要整理它)。但是,删除文件夹后,它仍然出现在文件对话框中。我可以在文件对话框中创建新文件夹,甚至还可以解析不再存在的xml文件。所以现在,在应用程序中我可以看到一个Templates文件夹,从头开始加载XML并将XML文件保存到它,并且应用程序完美运行。如果我在Windows资源管理器中转到该目录,那么Templates目录就不存在了,我也无法打开任何文件(我也尝试使用搜索框和F5,但没有显示)。
知道可能导致这个错误的原因吗?
以下是我要保存/加载这些文件的基本代码:
private void LoadTemplate ( object sender , RoutedEventArgs e )
{
OpenFileDialog dialog = new OpenFileDialog ();
dialog.Filter = "xml files |*.xml";
dialog.FilterIndex = 2;
if ( dialog.ShowDialog () == System.Windows.Forms.DialogResult.OK )
{
string path = dialog.FileName;
XmlDocument doc = new XmlDocument ();
doc.Load ( path );
if ( doc.DocumentElement != null )
{
XmlNodeList nodes = doc.DocumentElement.SelectNodes ( "Folders" ) [ 0 ].ChildNodes;
List < Folder > _folders = new List < Folder > ();
int currentLevel = 0;
foreach ( XmlNode node in nodes )
{
addItemToList ( ref _folders , node , currentLevel );
}
folders = _folders;
DeployHierarchy.ItemsSource = folders;
DeployHierarchy.Items.Refresh ();
}
}
}
private void SaveTemplate(object sender, RoutedEventArgs e)
{
SaveFileDialog savefile1 = new SaveFileDialog();
savefile1.Filter = "xml files |*.xml";
savefile1.FilterIndex = 2;
if (savefile1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
XmlDocument doc = new XmlDocument ();
XmlElement root = doc.CreateElement ( "Root" );
XmlElement currentEl = ( XmlElement ) root.AppendChild ( doc.CreateElement ( "Folders" ) );
doc.AppendChild ( root );
for (int i = 0; i < folders.Count; i++)
{
addElement( ref doc , ref currentEl, ref i, ref currentEl);
}
doc.Save ( savefile1.FileName );
}
}
答案 0 :(得分:1)
也许您已在安全限制文件夹中创建了文件夹/文件,并且没有以管理员身份运行WPF应用程序,在这种情况下,物理文件位于C:\Users\<user>\AppData\Local\VirtualStore
。