private string GetRelativePath(string id) { var nameParts = Path.GetFileNameWithoutExtension(id).Split('.'); string newPath = id; if (String.Compare(nameParts[0], "Configuration", true) == 0) //Configuration.ManagedApplicationModule.txt newPath = id; else if (nameParts.Length == 2) //AccumulationRegister..xml newPath = Path.Combine(nameParts[0], nameParts[1], nameParts[1] + Path.GetExtension(id)); else if (nameParts.Length == 4 && String.Compare(nameParts[0], "CommonPicture", true) == 0 && String.Compare(nameParts[2], "Picture", true) == 0 && String.Compare(nameParts[3], "Picture", true) == 0) { //CommonPicture.BCG.Picture.Picture.png newPath = Path.Combine(nameParts[0], nameParts[1], nameParts[3] + Path.GetExtension(id)); } else if (nameParts.Length == 4 && String.Compare(nameParts[0], "CommonForm", true) == 0 && String.Compare(nameParts[2], "form", true) == 0 && String.Compare(nameParts[3], "module", true) == 0) { //CommonForm.Offline.Form.Module.txt newPath = Path.Combine(nameParts[0], nameParts[1], nameParts[3] + Path.GetExtension(id)); } else if (nameParts.Length == 4 && String.Compare(nameParts[2], "form", true) == 0) { //AccumulationRegister..Form..xml newPath = Path.Combine(nameParts[0], nameParts[1], nameParts[2], nameParts[3], nameParts[3] + Path.GetExtension(id)); } else if (nameParts.Length == 6 && String.Compare(nameParts[4], "form", true) == 0 && String.Compare(nameParts[5], "module", true) == 0) { //Catalog..Form..Form.Module.txt newPath = Path.Combine(nameParts[0], nameParts[1], nameParts[2], nameParts[3], nameParts[5] + Path.GetExtension(id)); } else if (nameParts.Length == 4 && String.Compare(nameParts[2], "template", true) == 0) { //Catalog..Template..xml newPath = Path.Combine(nameParts[0], nameParts[1], nameParts[2], nameParts[3], nameParts[3] + Path.GetExtension(id)); } else if (String.Compare(nameParts[nameParts.Length - 1], "help", true) == 0) { //AccumulationRegister..Help.xml //SettingsStorage..Form..Help.xml //Subsystem..Subsystem..Help.xml List<string> pathParts = new List<string>(); pathParts.AddRange(nameParts.Take(nameParts.Length)); pathParts.Add(nameParts[nameParts.Length - 1] + Path.GetExtension(id)); newPath = Path.Combine(pathParts.ToArray()); } else if (nameParts.Length > 3 && String.Compare(nameParts[nameParts.Length - 2], "Subsystem", true) == 0) { //Subsystem..Subsystem..xml List<string> pathParts = new List<string>(); pathParts.AddRange(nameParts.Take(nameParts.Length)); pathParts.Add(nameParts[nameParts.Length - 1] + Path.GetExtension(id)); newPath = Path.Combine(pathParts.ToArray()); } else if (nameParts.Length > 2) { List<string> pathParts = new List<string>(); pathParts.AddRange(nameParts.Take(nameParts.Length - 1)); pathParts.Add(nameParts[nameParts.Length - 1] + Path.GetExtension(id)); newPath = Path.Combine(pathParts.ToArray()); } return newPath; }
string fullPath = Path.Combine(destinationDirectory, file.Path); if (File.Exists(fullPath)) File.Delete(fullPath); string fullPathDirectory = Path.GetDirectoryName(fullPath); if (!Directory.Exists(fullPathDirectory)) Directory.CreateDirectory(fullPathDirectory); File.Copy(Path.Combine(sourceDirectory, file.Id), fullPath);
Source: https://habr.com/ru/post/248303/
All Articles