Files
easySif/mainProgram/ProjectManager.cs
2021-12-14 18:39:55 +08:00

323 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}
}