first commit
This commit is contained in:
322
mainProgram/ProjectManager.cs
Normal file
322
mainProgram/ProjectManager.cs
Normal file
@ -0,0 +1,322 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
|
||||
namespace mainProgram
|
||||
{
|
||||
public class ProjectManager
|
||||
{
|
||||
public ProjectManager(string xx)
|
||||
{
|
||||
mProjectPath = xx;
|
||||
}
|
||||
|
||||
private string mProjectPath;
|
||||
private string mRawPath;
|
||||
private string mRadPath;
|
||||
private string mSifPath;
|
||||
|
||||
public string ProjectPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return mProjectPath;
|
||||
}
|
||||
set
|
||||
{
|
||||
mProjectPath = value;
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateProject()
|
||||
{
|
||||
//if (mProjectPath.Length==0)
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
}
|
||||
|
||||
public void OpenProject()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void SaveProject()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void AddData()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void DeleteData()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//生成工程元数据
|
||||
public void GenerateXMLFile(string xmlFilePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
//初始化一个xml实例
|
||||
XmlDocument myXmlDoc = new XmlDocument();
|
||||
//创建xml的根节点
|
||||
XmlElement rootElement = myXmlDoc.CreateElement("Computers");
|
||||
//将根节点加入到xml文件中(AppendChild)
|
||||
myXmlDoc.AppendChild(rootElement);
|
||||
|
||||
//初始化第一层的第一个子节点
|
||||
XmlElement firstLevelElement1 = myXmlDoc.CreateElement("Computer");
|
||||
//填充第一层的第一个子节点的属性值(SetAttribute)
|
||||
firstLevelElement1.SetAttribute("ID", "11111111");
|
||||
firstLevelElement1.SetAttribute("Description", "Made in China");
|
||||
//将第一层的第一个子节点加入到根节点下
|
||||
rootElement.AppendChild(firstLevelElement1);
|
||||
//初始化第二层的第一个子节点
|
||||
XmlElement secondLevelElement11 = myXmlDoc.CreateElement("name");
|
||||
//填充第二层的第一个子节点的值(InnerText)
|
||||
secondLevelElement11.InnerText = "Lenovo";
|
||||
firstLevelElement1.AppendChild(secondLevelElement11);
|
||||
XmlElement secondLevelElement12 = myXmlDoc.CreateElement("price");
|
||||
secondLevelElement12.InnerText = "5000";
|
||||
firstLevelElement1.AppendChild(secondLevelElement12);
|
||||
|
||||
|
||||
XmlElement firstLevelElement2 = myXmlDoc.CreateElement("Computer");
|
||||
firstLevelElement2.SetAttribute("ID", "2222222");
|
||||
firstLevelElement2.SetAttribute("Description", "Made in USA");
|
||||
rootElement.AppendChild(firstLevelElement2);
|
||||
XmlElement secondLevelElement21 = myXmlDoc.CreateElement("name");
|
||||
secondLevelElement21.InnerText = "IBM";
|
||||
firstLevelElement2.AppendChild(secondLevelElement21);
|
||||
XmlElement secondLevelElement22 = myXmlDoc.CreateElement("price");
|
||||
secondLevelElement22.InnerText = "10000";
|
||||
firstLevelElement2.AppendChild(secondLevelElement22);
|
||||
|
||||
//将xml文件保存到指定的路径下
|
||||
myXmlDoc.Save(xmlFilePath);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public void GetXMLInformation(string xmlFilePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
XmlDocument myXmlDoc = new XmlDocument();//初始化一个xml实例
|
||||
myXmlDoc.Load(xmlFilePath);//加载xml文件(参数为xml文件的路径)
|
||||
|
||||
XmlNode rootNode = myXmlDoc.SelectSingleNode("Computers");//获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点
|
||||
|
||||
string innerXmlInfo = rootNode.InnerXml.ToString();//分别获得该节点的InnerXml和OuterXml信息
|
||||
string outerXmlInfo = rootNode.OuterXml.ToString();
|
||||
|
||||
XmlNodeList firstLevelNodeList = rootNode.ChildNodes;//获得该节点的子节点(即:该节点的第一层子节点)
|
||||
foreach (XmlNode node in firstLevelNodeList)
|
||||
{
|
||||
XmlAttributeCollection attributeCol = node.Attributes;//获得该节点的属性集合
|
||||
foreach (XmlAttribute attri in attributeCol)
|
||||
{
|
||||
//获取属性名称与属性值
|
||||
string name = attri.Name;
|
||||
string value = attri.Value;
|
||||
Console.WriteLine("{0} = {1}", name, value);
|
||||
}
|
||||
|
||||
//判断此节点是否还有子节点
|
||||
if (node.HasChildNodes)
|
||||
{
|
||||
|
||||
XmlNode secondLevelNode1 = node.FirstChild;//获取该节点的第一个子节点
|
||||
string name = secondLevelNode1.Name;//获取该节点的名字
|
||||
string innerText = secondLevelNode1.InnerText;//获取该节点的值(即:InnerText)
|
||||
Console.WriteLine("{0} = {1}", name, innerText);
|
||||
|
||||
XmlNode secondLevelNode2 = node.ChildNodes[1];//获取该节点的第二个子节点(用数组下标获取)
|
||||
name = secondLevelNode2.Name;
|
||||
innerText = secondLevelNode2.InnerText;
|
||||
Console.WriteLine("{0} = {1}", name, innerText);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public void ModifyXmlInformation(string xmlFilePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
XmlDocument myXmlDoc = new XmlDocument();
|
||||
myXmlDoc.Load(xmlFilePath);
|
||||
|
||||
XmlNode rootNode = myXmlDoc.FirstChild;
|
||||
XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
|
||||
foreach (XmlNode node in firstLevelNodeList)
|
||||
{
|
||||
//修改此节点的属性值
|
||||
if (node.Attributes["Description"].Value.Equals("Made in USA"))
|
||||
{
|
||||
node.Attributes["Description"].Value = "Made in HongKong";
|
||||
}
|
||||
}
|
||||
//要想使对xml文件所做的修改生效,必须执行以下Save方法
|
||||
myXmlDoc.Save(xmlFilePath);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void AddXmlInformation(string xmlFilePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
XmlDocument myXmlDoc = new XmlDocument();
|
||||
myXmlDoc.Load(xmlFilePath);
|
||||
//添加一个带有属性的节点信息
|
||||
foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
|
||||
{
|
||||
XmlElement newElement = myXmlDoc.CreateElement("color");
|
||||
newElement.InnerText = "black";
|
||||
newElement.SetAttribute("IsMixed", "Yes");
|
||||
node.AppendChild(newElement);
|
||||
}
|
||||
//保存更改
|
||||
myXmlDoc.Save(xmlFilePath);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteXmlInformation(string xmlFilePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
XmlDocument myXmlDoc = new XmlDocument();
|
||||
myXmlDoc.Load(xmlFilePath);
|
||||
foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
|
||||
{
|
||||
//记录该节点下的最后一个子节点(简称:最后子节点)
|
||||
XmlNode lastNode = node.LastChild;
|
||||
//删除最后子节点下的左右子节点
|
||||
lastNode.RemoveAll();
|
||||
//删除最后子节点
|
||||
node.RemoveChild(lastNode);
|
||||
}
|
||||
//保存对xml文件所做的修改
|
||||
myXmlDoc.Save(xmlFilePath);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
//文件复制实现:https://www.cnblogs.com/sun-shadow/p/7553556.html
|
||||
public void CopyFileToFile(string sourceFolderName)//CopyFileToFile
|
||||
{
|
||||
if (Directory.Exists(mRawPath))
|
||||
{
|
||||
DelectDir(mRawPath);
|
||||
}
|
||||
CopySubFun(sourceFolderName, mRawPath, true);
|
||||
}
|
||||
|
||||
private void CopySubFun(string sourceFolderName, string destFolderName, bool overwrite)
|
||||
{
|
||||
if (!Directory.Exists(sourceFolderName))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!Directory.Exists(destFolderName))
|
||||
{
|
||||
Directory.CreateDirectory(destFolderName);
|
||||
}
|
||||
|
||||
string[] sourceFilesPath = Directory.GetFileSystemEntries(sourceFolderName);
|
||||
|
||||
for (int i = 0; i < sourceFilesPath.Length; i++)
|
||||
{
|
||||
string sourceFilePath = (sourceFilesPath[i]).Replace("\\", "/");
|
||||
string[] forlders = sourceFilePath.Split('/');
|
||||
|
||||
if (File.Exists(sourceFilePath))//是文件,直接拷贝
|
||||
{
|
||||
string dest = destFolderName;
|
||||
string sourceFileName = Path.GetFileName(sourceFilePath);
|
||||
File.Copy(sourceFilePath, Path.Combine(dest, sourceFileName), overwrite);
|
||||
}
|
||||
else if (Directory.Exists(sourceFilePath))//是文件夹,拷贝文件夹;并递归
|
||||
{
|
||||
string lastDirectory = forlders[forlders.Length - 1];
|
||||
string dest = Path.Combine(destFolderName, lastDirectory).Replace("\\", "/");
|
||||
|
||||
if (!Directory.Exists(dest))
|
||||
{
|
||||
Directory.CreateDirectory(dest);
|
||||
}
|
||||
CopySubFun(sourceFilePath, dest, overwrite);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DelectDir(string srcPath)
|
||||
{
|
||||
|
||||
DirectoryInfo dir = new DirectoryInfo(srcPath);
|
||||
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录
|
||||
foreach (FileSystemInfo i in fileinfo)
|
||||
{
|
||||
if (i is DirectoryInfo) //判断是否文件夹
|
||||
{
|
||||
DirectoryInfo subdir = new DirectoryInfo(i.FullName);
|
||||
subdir.Delete(true); //删除子目录和文件
|
||||
}
|
||||
else
|
||||
{
|
||||
File.Delete(i.FullName); //删除指定文件
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//工程结构
|
||||
public void CreateProjectStructure()
|
||||
{
|
||||
//创建工程文件夹结构
|
||||
mRawPath = mProjectPath + "/raw/";
|
||||
mRadPath = mProjectPath + "/rad/";
|
||||
mSifPath = mProjectPath + "/sif/";
|
||||
if (false == Directory.Exists(mRawPath))
|
||||
{
|
||||
Directory.CreateDirectory(mRawPath);
|
||||
}
|
||||
if (false == Directory.Exists(mRadPath))
|
||||
{
|
||||
Directory.CreateDirectory(mRadPath);
|
||||
}
|
||||
if (false == Directory.Exists(mSifPath))
|
||||
{
|
||||
Directory.CreateDirectory(mSifPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user