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

}

}

}

}

}

}

C#自动化IO/XML作业的更多相关文章

  1. IO流作业

    IO流作业 一.    填空题 Java IO流可以分为    字节流          和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道 ...

  2. 2017.12.20 Java中的 IO/XML学习总结 File类详细

    IO / XML 一.File类 1.定义/概念 Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件.File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文 ...

  3. python接口自动化-发xml格式post请求

    前言 post请求相对于get请求多一个body部分,body部分常见的数据类型有以下四种(注意是常见的,并不是只有4种) application/x-www-form-urlencoded appl ...

  4. javaee IO流作业02

    package Zy; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.Fil ...

  5. javaee IO流作业

    package Zy; import java.io.Serializable; public class Student implements Serializable{ private stati ...

  6. 老男孩python自动化运维作业2

    拿到要求真不知道怎么写,不能还要写个商城页面吧: 最后还是用了input()模拟用户操作吧- -!不就操作个字典吗(字典模拟商品数据). python版本: >>>import sy ...

  7. 老男孩python自动化运维作业1

    #!/usr/bin/env pthon #字典操作三级菜单 “b”返回上一级菜单,“q”退出. menu={"BJ":{"cp":{1:1,2:2,3:3}, ...

  8. 简单Java类与XML之间的转换

    需要的jar包:xmlpull_1_0_5.jar,xstream-1.4.1.jar) 1.工具类XstreamUtil package com.learn.util; import com.tho ...

  9. JAVA对象和XML文档、原来他们之间还有这一出

    最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...

随机推荐

  1. interesting js

    [‎5/‎3/‎2016 4:18 PM] Calos Chen: function a(b,e){var a=0;a+=b;if(e){console.log(b+e);return;} retur ...

  2. yii遍历行下的每列数据(小1月考)

    效果图: 控制器(1种): //显示列表    public function actionList()    {        //实例化对象        $model= new Qiu();   ...

  3. c#经典俄罗斯方块 vs2012开发

    把网上两个开源的俄罗斯方块,整合到一起了,开发环境vs2012+.net 4.0,有问题.建议可以加群沟通哦 复古的 c#写的一个俄罗斯方块小游戏,友好的人机交互,具体功能如下: 1.游戏分七个关卡, ...

  4. 关于mybatis的参数2个使用经验(类似于struts2的通配所有页面的action配置,xmlsq语句参数类型为基本类型时的快捷指定办法)

    1.我们都知道在struts2中为防止浏览器绕过struts过滤器直接请求页面,所以我们都会配置一个拦截所有页面的action,如下: <action name="*"> ...

  5. JSP-04- 实现数据的保存

    .1  Session 一段时间内,单个客户与Web服务器的一连串相关的交换过程. Ø  4.1.1  应用的场景: 用户登录后保存用户状态 确定用户的唯一   Sessin.getId(); Ø  ...

  6. android初体验——HelloWord

    一.新建项目: 打开 eclipse ,选择File – New – Android Application Project 输入项目名称,程序名称,包名. 包名不能重复,它是项目的唯一标示,我理解为 ...

  7. 累加两个php数组,键相同的累加,不同的合并

    1. $arr1=array('name'=>33,'type'=>1); $arr2=array('name'=>33,'price'=>200); $res=array() ...

  8. TVideoGrabber的使用(一)捕捉摄像头

    使用TVideoGrabber捕捉摄像头,相当容易,只需几句代码即可解决问题,首先我们新建一个工程,然后从控件面板上拉取一个 TVideoGrabber控件到窗体中,然后再在窗体上放置四个Button ...

  9. linux设备驱动归纳总结(八):2.总线、设备和驱动的关系【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-110295.html linux设备驱动归纳总结(八):2.总线.设备和驱动的关系 xxxxxxxxx ...

  10. JBuilder链接sql server数据库

    加载你的jdbc的驱动             一.将jdbc驱动解压到一个指定的目录,例如:c:\sql_server_jdbc,                其中包含三个驱动文件:msbase. ...