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

本文介绍了如何使用C#程序高效地筛选并复制HTML、JavaScript和CSS文件,同时保持原有的目录结构。通过在命令行使用'where'命令筛选文件,然后编写C#代码读取路径并进行复制,实现了快速批量处理大量文件,避免了手动操作的繁琐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近测试一个包含有几千个网页的内容, 需要把里面的一些源文件,  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分钟就复制完了.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值