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 WindowsFormsApplication1获取目录下文件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//获取目录下指定类型的文件集合
String path = @"../../Views"; //第一种方法
var files = Directory.GetFiles(path, "*.txt"); foreach (var file in files)
{ Console.WriteLine(file); //输出的路径+名称
} //第二种方法
DirectoryInfo folder = new DirectoryInfo(path);//目录信息 foreach (FileInfo file in folder.GetFiles("*.txt"))
{
Console.WriteLine(file.FullName); //获取每个文件的所有信息
} //C#遍历指定文件夹中的所有文件
DirectoryInfo TheFolder = new DirectoryInfo(path);
//遍历文件夹
foreach (DirectoryInfo NextFolder in TheFolder.GetDirectories())
{
//this.listBox1.Items.Add(NextFolder.Name);
}
//遍历文件
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
//this.listBox2.Items.Add(NextFile.Name);
} } public void FindFile(string dirPath) //参数dirPath为指定的目录
{
//在指定目录及子目录下查找文件,在listBox1中列出子目录及文件
DirectoryInfo Dir = new DirectoryInfo(dirPath);
try
{
foreach (DirectoryInfo d in Dir.GetDirectories())//查找子目录
{
FindFile(Dir + d.ToString() + "\\");
//listBox1.Items.Add(Dir+d.ToString()+"\"); //listBox1中填加目录名
}
foreach (FileInfo f in Dir.GetFiles("*.---")) //查找文件
{
//listBox1.Items.Add(Dir+f.ToString()); //listBox1中填加文件名
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
} } public void ListFiles(FileSystemInfo info) ////文件系统信息 参数为目录
{
if (info.Exists != true) return; //不存在就返回
DirectoryInfo dir = info as DirectoryInfo; //这句是否多余???
if (dir == null) return; //是否是目录类型
FileSystemInfo[] files = dir.GetFileSystemInfos(); //返回文件目录和所有文件
for (int i = ; i < files.Length; i++)
{
FileInfo file = files[i] as FileInfo;
if (file != null) //是文件
{
if (file.Extension.Contains("cshtml"))
{
this.dataGridView1.Rows.Add(file.Name, file.Length);//文件名和大小
}
Console.WriteLine(file.FullName + "\t " + file.Length); //输出完整目录和大小
}
//对于子目录,进行递归调用
else //不是文件,是目录
{
ListFiles(files[i]); // 递归
}
}
} private void button2_Click(object sender, EventArgs e)
{ #region --清空dataGridView
//清空方法1
DataTable dt = (DataTable)dataGridView1.DataSource;
if (dt != null && dt.Rows.Count > )
{
dt.Columns.Clear();
dt.Rows.Clear();
dataGridView1.DataSource = dt;
}
//清空方法2
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
#endregion #region --添加列
this.dataGridView1.Columns.Add("", "文件路径");//添加列
this.dataGridView1.Columns.Add("", "文件大小");
this.dataGridView1.Columns.Add("", "是否存在");
#endregion #region --添加行并设置值,
this.dataGridView1.Rows.Add("第一个字段值", "第二个字段值", "第三个字段值");//添加一行数据
dataGridView1.Rows[].Cells[].Value = "";
dataGridView1.Rows[].Cells[].Value = "";
dataGridView1.Rows[].Cells[].Value = "";
//或者
//循环添加行并设置值
for (int i = ; i <= ; i++)
{
int index = this.dataGridView1.Rows.Add(); //添加行
this.dataGridView1.Rows[index].Cells[].Value = i; //设置值
}
#endregion ////测试按钮
#region --遍历目录文件到列表中
DirectoryInfo folder = new DirectoryInfo("../../Views");//目录信息
ListFiles(folder);
#endregion this.dataGridView1.Rows.Add("第一个字段值", "第二个字段值");//未传参默认为空值.
//--
} private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.ReadOnly = true;//只读属性
dataGridView1.AllowUserToAddRows = false; //不显示出dataGridView1的最后一行空白 }
List<string> resuls = new List<string>();
private void button3_Click(object sender, EventArgs e)
{
//获得目录下所有文件 ,并循环读取内容,
var files = Directory.GetFiles(@"F:\新建文件夹\20180817");
for (int i = ; i < files.Length;i++ )
{
var array = File.ReadAllLines(files[i], Encoding.GetEncoding("gb2312")); //打开一个文本文件,读取文件的所有行,然后关闭该文件。
string result = string.Join("\r\n", array);//array为数组
if (result.Contains("xxx"))
{
resuls.Add(files[i]);
var path = Application.StartupPath; //\bin\Debug
System.IO.DirectoryInfo topDir = System.IO.Directory.GetParent(System.Environment.CurrentDirectory);
var path1 = topDir.FullName; //文件\bin. if (Directory.Exists(path1+"\\temp") == false)//如果不存 就创建,
{
Directory.CreateDirectory(path1 + "\\temp");
} if (File.Exists(files[i]))//必须判断要复制的文件是否存在
{
File.Copy(files[i], path1 + "\\temp\\" + Path.GetFileName(files[i]), true);//三个参数分别是源文件路径,存储路径,若存储路径有相同文件是否替换
}
}
}
//重复的csv名称,读取后,归类, 上传 MessageBox.Show("完成");
} /// <summary>
/// 复制文件夹中的所有内容
/// </summary>
/// <param name="sourceDirPath">源文件夹目录</param>
/// <param name="saveDirPath">指定文件夹目录</param>
public void CopyDirectory(string sourceDirPath, string saveDirPath)
{
try
{
if (!Directory.Exists(saveDirPath)) //判断路径是否存在
{
Directory.CreateDirectory(saveDirPath);//不存在 创建
}
string[] files = Directory.GetFiles(sourceDirPath);//返回指定路径下的所有文件
foreach (string file in files)
{
string pFilePath = saveDirPath + "\\" + Path.GetFileName(file);
if (File.Exists(pFilePath))//文件是否存在
continue;
File.Copy(file, pFilePath, true);//复制文件
} string[] dirs = Directory.GetDirectories(sourceDirPath);//返回指定目录下的子文件夹
foreach (string dir in dirs)
{
CopyDirectory(dir, saveDirPath + "\\" + Path.GetFileName(dir)); //GetFileName获得文件夹名称
}
}
catch (Exception ex)
{
//if (File.Exists(pLocalFilePath))//必须判断要复制的文件是否存在
//{
// File.Copy(pLocalFilePath, pSaveFilePath, true);//三个参数分别是源文件路径,存储路径,若存储路径有相同文件是否替换
//}
}
}
}
}

C# 获取目录下文件的更多相关文章

  1. python生成器 获取 目录下文件

    # os.walk()和os.list 都是得到所有文件的列表, 如果目录下文件特别多, 上亿了, 我们就需要生成器的方式获取 # 要求目录下面没有目录, 会递归到子目录下面找文件, (如果有子目录可 ...

  2. 【Unix编程】C/C++获取目录下文件或目录

    在Unix/Linux系统中,要获取一个指定目录下所有的文件或文件夹,一般用dirent.h(POSIX标准定义的目录操作头文件). 一.数据类型 在头文件<dirent.h>中定义了两种 ...

  3. WPF-TreeView获取文件夹目录、DataGrid获取目录下文件信息

    开发一个WPF桌面应用程序.刚接触WPF编程以及C#语言,这里把一些关键的问题记录下来. 下面是实现将路径的文件夹信息绑定到TreeView及DataGrid上显示. 关键问题是C#数据绑定方式及IE ...

  4. linux获取目录下文件

    查看当前目录下的文件: find . -type f 查看当前目录下的文件夹: find . -type d 如果文件file1不为空: if [ -s file1 ];then      echo  ...

  5. php 获取目录下文件列表

    可以用 scandir() 函数 例如: http://www.w3school.com.cn/php/func_directory_scandir.asp

  6. python获取目录下文件夹名称

    path = '/opt' dirs = os.listdir(path) for dir in dirs: print dir

  7. 取CPU序列号,获取网卡,取硬盘系列号,获取目录下的文件,强制删除目录

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  8. Linux下wget获取ftp下目录下文件

    如果某个目录下有一个文件可以使用ftp命令: get xxx 如果是某个目录下有多个文件(且不需要获取目录下子文件夹下的内容): mget * 如果是某个目录下有子目录希望获取所有子目录: wget ...

  9. Python开发【笔记】:获取目录下所有文件

    获取文件 import os def sub_dirs(rdir): li = os.listdir(rdir) return li def main(rdir): content = sub_dir ...

随机推荐

  1. Linux设备驱动--块设备(四)之“自造请求”

    前面, 我们已经讨论了内核所作的在队列中优化请求顺序的工作; 这个工作包括排列请求和, 或许, 甚至延迟队列来允许一个预期的请求到达. 这些技术在处理一个真正的旋转的磁盘驱动器时有助于系统的性能. 但 ...

  2. jsp实现翻页功能

    jsp实现翻页功能 要实现翻页功能,只需要设置一个pageIndex即可,然后每次加载页面时通过pageIndex去加载数据就行. 那么我们可以设置一个隐藏的input框,用于传递pageIndex给 ...

  3. Java 内部类理解

    为什么使用内部类? 答:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响. 内部类有哪些? 答:内部类一般来说包括这四种:成员内部类.局 ...

  4. WIN8系统的远程桌面漏洞 利用QQ拼音纯净版实现提权

    前言 发现这个漏洞的时候, 笔者正在机房上课.正想用3389远程桌面去控制宿舍电脑的时候,因为重做系统忘记自己的IP地址,因此就随手扫描了一下IP段开3389端口的电脑. 没想到就随手扫描到一台WIN ...

  5. UI:使用 pod 引入 AFNetworking

    cocdpods的安装  参考1  参考2 参考3 注意:MVC是一种搭建项目的思想,不是设计模式. 使用第三方管理控件: 引入CocoaPods的详细步骤:(1)检测有没有引入淘宝镜像gem sou ...

  6. Redis学习记录

    参考资料: http://www.dengshenyu.com/%E5%90%8E%E7%AB%AF%E6%8A%80%E6%9C%AF/2016/01/09/redis-reactor-patter ...

  7. sqlsugar的sum的用法

    通过论坛的检索 查到三篇文章是关于sum的 http://www.codeisbug.com/Ask/9/4531 http://www.codeisbug.com/Ask/14/4128 文章1:2 ...

  8. bzoj 4236: JOIOJI【前缀和+map】

    设sj,so,si分别是J O I的个数前缀和,然后要求求最长(l,r)满足sj[r]-sj[l-1]==so[r]-so[l-1]==si[r]-si[l-1],化简一下就是满足so[r]-so[l ...

  9. bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形【枚举】

    每句两个顶点确定正方形,取max即可 #include<iostream> #include<cstdio> using namespace std; int n,x,y,s, ...

  10. [App Store Connect帮助]七、在 App Store 上发行(2.4)设定价格与销售范围:安排价格调整

    如果您拥有<付费应用程序协议>,则可以为您的 App 安排随时间推移的价格调整.您可以安排具有明确开始日期和结束日期的定价调整,以及没有结束日期的永久性定价调整.例如,您可以设置一个为期 ...