您的位置:首页 > 编程语言 > C#

[C#] 筛选复制文件并保持原有的目录结构

2012-06-06 13:23 459 查看
最近测试一个包含有几千个网页的内容, 需要把里面的一些源文件, js,html,css等收集起来做code scan.

但是有一个要求就是复制出来的文件的目录结构要和源文件的目录结构相同.

几千个文件中,有pdf,swf,html,js,css等文件, 有代码的文件,像js,css,html等估计也应该会有1000以上, 要是用手动去复制, 那估计要搞死人的.

懒人总有懒办法, 现在我的方法如下:

1. 筛选文件

a. 打开cmd 命令窗口, 输入

where -r "C:\test" *.js *.html *.css >> js.txt

这样就把些目录下面的所有的以js,html,css为扩展名的文件的路径都写到了js.txt这个文件里, 内容如下:

C:\test\index.html

C:\test\xxx.js

C:\test\test2\xxx.html

C:\test\test2\test2\xxx.css

2. 写一C#程序, 读取文件路径并将其复制相应的文件夹下面, 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;

namespace CopyContentFile
{
class Program
{
static void Main(string[] args)
{
//读取文本文件的路径
string path = @"c:\myback\js.txt";

string sLine = "";
string strSource;
string strDest;
string strTemp;
string strDir;
int n;
int m = 1;

//Arraylist
ArrayList arrText = new ArrayList();

//读取文件
StreamReader objReader = new StreamReader(path);
//循环读取文件
while (sLine != null)
{
//将每行的内容赋值给sLine
sLine = objReader.ReadLine();
if (sLine != null)
{
//如果sLine不为空,就将其添加到ArrayList里
arrText.Add(sLine);
}
}
//关闭文件流
objReader.Close();

//从ArrayList里读取内容
foreach (string strArrayText in arrText)
{
//源文件的路经
strSource = strArrayText;
//截取其中的一部分
strTemp = strArrayText.Substring(11,strSource.Length-11);
//目标文件路径
strDest = "h:" + strTemp;
//截取目标文件夹的路径
n = strDest.LastIndexOf("\\");
strDir = strDest.Substring(0, n);

//创建目标文件夹
Directory.CreateDirectory(strDir);
//显示复制文件的个数
Console.WriteLine("正在复制第"+ m + "文件!" );
//复制文件
File.Copy(strSource, strDest, true);
m++;//自增
}
//显示完成
Console.WriteLine("Complete!");
Console.ReadKey();
}
}
}


筛选出来大约有1500个文件, 不到1分钟就复制完了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐