当前位置: 首页 > news >正文

读取指定目录下文件-- ---LIST+递归。(跳出结构思想。利用数据结构思路+程序写出更简单的逻辑。)...

由于初次接触。而且是想开发自己使用的工具。效率上没有怎么考虑。

 

——————————————————————————————————————————————————

谈谈自己的思路:

先说说我的错误思路:最开始一接手做一个文档。需要把代码都整理到一个WORD里面。我就想。

    第一步:应该把所有的规定好的文件名都得到。

   第二部:应该用word控件;

于是我就开始想。第一步得到所有的文件名。  但是文件根目录下包含很多不同的文件和目录,那么是不是利用栈来考虑,把搜索过的文件弹出栈。后来又想目录结构不是个树吗?于是又去看二叉树。看完二叉树,发现这丫是一个多叉树。多叉树的生成 我又不会写。而且多叉树的查找也要再转换成二叉树(森林转二叉树),转换过程中还要使用平衡二叉树的知识。这些我都会。可是写成代码可真难为我了。以后再加深吧。

 

想破脑袋,又一想。本来它就是个栈或者链表。我就递归就是了。又不是考试。写明了不能递归。 于是。就借鉴网上一段程序。用LIST列表+递归的方式来实现查找目录

 

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;

namespace CopyToWord
{
    public partial class Form1 : Form
    {
     FolderBrowserDialog folderBrowserDialog1=new FolderBrowserDialog ();
      OpenFileDialog openFileDialog1=new OpenFileDialog ();
    bool folderDefine = false;
        private List<FileInfo> list = new List<FileInfo>();//文件的集合
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            folderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyComputer;//此对象的根目录必须是特殊的枚举目录

            DialogResult result = folderBrowserDialog1.ShowDialog();

            if(result==DialogResult.OK){
                openFileDialog1.InitialDirectory = folderBrowserDialog1.SelectedPath;//文件的根目录是 用户选择的文件夹路径
                textBox1.Text = folderBrowserDialog1.SelectedPath;

                start.Visible = true;
  
            
            }

            //OpenFileDialog openFileDialog1 = new OpenFileDialog();
            //openFileDialog1.InitialDirectory = "E:\\";//初始的文件路径
            //openFileDialog1.Filter = ".net file (*.cs;*.js;*.aspx;*.aspx.cs;*.aspx.designer.cs;*.ashx)|*cs;*.aspx;*.aspx.cs;*.aspx.designer.cs;*.ashx;*.js";
            初始的文件类型后缀名

            //openFileDialog1.FilterIndex = 1;//索引默认为1

            //openFileDialog1.RestoreDirectory = true;

            //if (openFileDialog1.ShowDialog() == DialogResult.OK) {

            //    try { 
  

            //    }
            //    catch { }

            //}



        }

        private void start_Click(object sender, EventArgs e)
        {
            state.Text = "读入中……";
            Application.DoEvents();    
            FindFile(textBox1.Text);
            foreach (FileInfo f in list)
            {
                Console.WriteLine(f.FullName.ToString());
            }
            state.Text = "完毕!";
            Application.DoEvents();
            Console.WriteLine("共输出" + list.Count.ToString()+"个文件");
        }


        public   void   FindFile(string   dir)   //参数为指定的目录 
        {
           DirectoryInfo Dir = new DirectoryInfo(dir); 
           

            foreach (FileInfo f in Dir.GetFiles("*.cs")) //查找文件  
            {
                list.Add(new FileInfo(Dir + f.ToString()));
                //listBox1中填加文件名 
            }
            foreach (FileInfo f in Dir.GetFiles("*.aspx")) //查找文件  
            {
                list.Add(new FileInfo(Dir + f.ToString()));
                //listBox1中填加文件名 
            }
            foreach (FileInfo f in Dir.GetFiles("*.aspx.cs")) //查找文件  
            {
                list.Add(new FileInfo(Dir + f.ToString()));
                //listBox1中填加文件名 
            }
            foreach (FileInfo f in Dir.GetFiles("*.aspx.designer.cs")) //查找文件  
            {
                list.Add(new FileInfo(Dir + f.ToString()));
                //listBox1中填加文件名 
            }
            foreach (FileInfo f in Dir.GetFiles("*.ashx")) //查找文件  
            {
                list.Add(new FileInfo(Dir + f.ToString()));
                //listBox1中填加文件名 
            }
            foreach (FileInfo f in Dir.GetFiles("*.js")) //查找文件  
            {
                list.Add(new FileInfo(Dir + f.ToString()));
                //listBox1中填加文件名 
            } 
            
            //C#读取文件夹在指定目录及子目录下查找文件,在listBox1中列出子目录及文件 
           
            try {       
                foreach(DirectoryInfo   d   in   Dir.GetDirectories())//查找子目录  
            {
                FindFile(Dir + "\\" + d.ToString()); 
              // listBox1.Items.Add(Dir+d.ToString()+"\\"); 
                //listBox1中填加目录名 
            }
            
            }  catch(Exception   e)  {  MessageBox.Show(e.Message);  }   } 
    }
}

相关文章:

  • CentOS 6.0 安装配置rails 2.3.11 + redmine 1.2.1 笔记
  • 望江南
  • 输不起慢的代价,赢不了休息的时间
  • P42S25C查看开机次数、时间、坏点的方法
  • 关于linux颜色
  • poj3226
  • 简单使用ubuntu
  • 清除Windows Server Backup 备份副本
  • IT行业发展前景
  • [C++]运行时,如何确保一个对象是只读的
  • PowerShell应用之-批量执行SQL脚本
  • 大家都为了考试的事,读疯了。
  • 职场加薪步步高升的五大法则
  • DR模型集群概述
  • MVC LINQ中用封装的TSQL通用更新方法
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Angular2开发踩坑系列-生产环境编译
  • Computed property XXX was assigned to but it has no setter
  • co模块的前端实现
  • Druid 在有赞的实践
  • dva中组件的懒加载
  • Joomla 2.x, 3.x useful code cheatsheet
  • js面向对象
  • PHP 的 SAPI 是个什么东西
  • python docx文档转html页面
  • REST架构的思考
  • Shell编程
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​比特币大跌的 2 个原因
  • (HAL库版)freeRTOS移植STMF103
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (简单) HDU 2612 Find a way,BFS。
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (原)Matlab的svmtrain和svmclassify
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)memcache、redis缓存
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .net 无限分类
  • .net的socket示例
  • .net通用权限框架B/S (三)--MODEL层(2)
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @ConditionalOnProperty注解使用说明
  • [ActionScript][AS3]小小笔记
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C++]:for循环for(int num : nums)
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境
  • [CF]Codeforces Round #551 (Div. 2)
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日