博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读取指定目录下文件-- ---LIST+递归。(跳出结构思想。利用数据结构思路+程序写出更简单的逻辑。)...
阅读量:7077 次
发布时间:2019-06-28

本文共 4250 字,大约阅读时间需要 14 分钟。

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

 

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

谈谈自己的思路:

先说说我的错误思路:最开始一接手做一个文档。需要把代码都整理到一个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
list = new List
();//文件的集合 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); } } }}

转载地址:http://iscml.baihongyu.com/

你可能感兴趣的文章
关于INTRAWEB ISAPI DLL发布
查看>>
解决ASP.NET MVC4中使用Html.DropDownListFor显示枚举值默认项问题
查看>>
数据挖掘10大算法介绍
查看>>
Kaggle 商品销量预测季军方案出炉,应对时间序列问题有何妙招
查看>>
《程序员的修炼——从优秀到卓越》
查看>>
使用.net开发手机管理软件 (十) 短信部分——VB.NET解码PDU
查看>>
sql2005 COM+ 目录要求 (警告)
查看>>
恋恋风尘
查看>>
mongodb - collMod
查看>>
学生如何提高专业英文阅读能力--施一公教授
查看>>
回顾2011,展望2012
查看>>
Android实例RSS客户端开发(3)--rss列表并显示在ui上
查看>>
PCI总线原理(四)
查看>>
unity, 设置帧率上限
查看>>
linux watchdog demo hacking
查看>>
两个函数连续性的讨论
查看>>
从头開始写项目Makefile(五):嵌套运行
查看>>
3种Nginx防盗链的方法
查看>>
UVA 10057 A mid-summer night's dream.
查看>>
JavaScript中的this
查看>>