C#自动化IO/XML作业

简介: PS:这是我们公司自动化测试留的一个作业,虽然我不是自动化的,但是也做了一下。 Friday, November 28, 2014 ​这个也是我根据自动化部门的那次作业自己分析写的,没有写打log的过程,细化的时候再判断再分析吧,主要目的是学习C#。

PS:这是我们公司自动化测试留的一个作业,虽然我不是自动化的,但是也做了一下。

Friday, November 28, 2014

​这个也是我根据自动化部门的那次作业自己分析写的,没有写打log的过程,细化的时候再判断再分析吧,主要目的是学习C#。本次的内容是一个窗体程序:遍历指定目录下的文件;将文件信息存入XML中;将XML中的路径结构还原到指定目录下;如果扩展写的话还可以进行数据的备份和还原。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Xml;

using System.Text.RegularExpressions; 

 

namespace WindowsFormsApplication2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            //Blank

        }

        private void BackUp_Click(object sender, EventArgs e)

        {

            string path = CheckOutPath.Text.ToString();

            //Create XML

            CreateXML();

            GetAllFiles(path);

        }

        //Get all files under the path

        private void GetAllFiles(string path)

        {

            DirectoryInfo dir = new DirectoryInfo(@path);

            FileInfo[] files = dir.GetFiles();

            //Store files into XML

            StoreIntoXML(dir.Parent.ToString(), files);

            DirectoryInfo[] subDirs = dir.GetDirectories();

            //Store subdirs into XML

            StoreIntoXML(dir.Parent.ToString(),subDirs);

            foreach (DirectoryInfo subDir in subDirs) {        

                string subPath = subDir.FullName;

                GetAllFiles(subPath);

            }

        }

        //Create the XML under the XMLForBackUpPath

        private void CreateXML()

        {

            string XMLPath = XMLForBackUpPath.Text.ToString();

            XmlDocument xml = new XmlDocument();

            xml.LoadXml("<XML></XML>");

            string filePath = Path.Combine(XMLPath,"BackUp.XML");

            xml.Save(@filePath);

        }      

        //Store subdirs into XML

        private void StoreIntoXML(string parentDir,DirectoryInfo[] subDirs)

        {

            //Load the XML

            string XMLPath = XMLForBackUpPath.Text.ToString();

            string filePath = Path.Combine(XMLPath, "BackUp.XML");

            XmlDocument xml = new XmlDocument();

            xml.Load(@filePath);

            //Append the child node to parentDir if possible

            foreach (DirectoryInfo subDir in subDirs)

            {

                XmlElement subNode = xml.CreateElement("FolderNode");

                xml.DocumentElement.AppendChild(subNode);

                subNode.SetAttribute("type", "folder");

                subNode.SetAttribute("path", subDir.FullName.ToString());

                subNode.SetAttribute("name", subDir.ToString());

                subNode.SetAttribute("parent", parentDir);              

            }

            xml.Save(@filePath);

        }

        //Store files into XML

        private void StoreIntoXML(string parentDir,FileInfo[] files)

        {

            //Load the XML

            string XMLPath = XMLForBackUpPath.Text.ToString();

            string filePath = Path.Combine(XMLPath, "BackUp.XML");

            XmlDocument xml = new XmlDocument();

            xml.Load(@filePath);

            //Append the child node to parentDir if possible

            foreach (FileInfo file in files)

            {

                XmlElement subNode = xml.CreateElement("FileNode");

                xml.DocumentElement.AppendChild(subNode);

                subNode.SetAttribute("type", "file");

                subNode.SetAttribute("name", file.ToString());

                subNode.SetAttribute("path", file.FullName.ToString());

                subNode.SetAttribute("parent",parentDir);

            }

            xml.Save(@filePath);

        }        

        private void Restore_Click(object sender, EventArgs e)

        {

            //Restore

            string RestorePath=XMLForRestorePath.Text.ToString();

            RestoreSolution(RestorePath);

 

        }

        //Restore the file system structure from the XML

        private void RestoreSolution(string path)

        {

            XmlDocument XMLForRestore = new XmlDocument();

            XMLForRestore.Load(@path);

            XmlNodeList nodeLists = XMLForRestore.DocumentElement.ChildNodes;

            foreach(XmlElement ele in nodeLists) 

            {

                if (ele.GetAttribute("type") == "folder") 

                {

                    if (!System.IO.Directory.Exists(@ele.GetAttribute("path"))) 

                    {

                        Directory.CreateDirectory(@ele.GetAttribute("path"));

                    }

                }

            }

        }

    }

}

 

相关文章
|
7月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
|
3月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
196 61
C# 中的 XML 与 JSON 数据处理
|
1月前
|
Devops jenkins 测试技术
C# 一分钟浅谈:自动化部署与持续集成
【10月更文挑战第21天】本文介绍了自动化部署和持续集成(CI)在C#项目中的应用,涵盖基础概念、常用工具(如Jenkins、GitHub Actions、Azure DevOps、GitLab CI/CD)、常见问题及解决方案,以及实践案例和代码示例。通过合理配置CI/CD工具,可以显著提高开发效率和代码质量。
63 1
|
2月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
116 0
|
2月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
553 0
|
4月前
|
存储 监控 Linux
|
4月前
|
存储 运维 监控
|
7月前
|
XML Java Maven
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
199 0
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
|
7月前
|
XML 存储 C#
C# xml文档反序列化记事
本文介绍了使用XmlSerializer进行XML序列化和反序列化的关键点。包括:1) 以独占方式读取XML文件以避免并发问题;2) 当元素名与类型名不一致时,可通过`[XmlArrayItem]`指定元素名,或创建继承自原始类型的子类;3) 处理DateTime反序列化错误,通过中间字符串属性转换;4) 提到了常用C#特性如`[XmlRoot]`, `[XmlElement]`, `[XmlAttribute]`, `[XmlIgnore]`和`[XmlArrayItem]`的作用。
|
7月前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
97 1