public static void SaveManifest(CapsResManifest mani, string file) { var tmpfile = file + ".tmp"; using (var sw = PlatDependant.OpenWriteText(tmpfile)) { if (mani != null && mani.Root != null) { Stack <Pack <int, CapsResManifestNode> > candis = new Stack <Pack <int, CapsResManifestNode> >(); candis.Push(new Pack <int, CapsResManifestNode>(0, mani.Root)); while (candis.Count > 0) { var ppair = candis.Pop(); var plvl = ppair.t1; var parent = ppair.t2; for (int i = 0; i < plvl; ++i) { sw.Write("*"); } sw.WriteLine(parent.PPath ?? ""); var children = parent.Children; if (children != null) { var clvl = plvl + 1; for (int i = children.Count - 1; i >= 0; --i) { var child = children.Values[i]; candis.Push(new Pack <int, CapsResManifestNode>(clvl, child)); } } } } } PlatDependant.MoveFile(tmpfile, file); }