在system.iO;命名空间中提供了两种遍历枚举文件夹的类,Directory 和DirectoryInfo,

他们都有一个方法GetDirectories();来便利枚举文件夹,

        /// <summary>
/// 遍历根目录 ,获取专业名称
/// </summary>
/// <returns></returns>
public DataTable GetYearName(string path)
{
//string strYear = "";
DataTable tbYear = new DataTable("年份表");
string[] arrPath = Directory.GetDirectories(path);
//添加表头
tbYear.Columns.Add("id");
tbYear.Columns.Add("year_url");
tbYear.Columns.Add("year_name");
for (int i = 0; i < arrPath.Length / 2; i++)
{
string temp = arrPath[i];
arrPath[i] = arrPath[arrPath.Length - 1 - i];
arrPath[arrPath.Length - 1 - i] = temp;
}
for (int i = 0; i < arrPath.Length; i++)
{ string[] arrSplit = arrPath[i].ToString().Split('\\');
tbYear.Rows.Add(new object[] { i, arrPath[i], arrSplit[arrSplit.Length - 1] }); }
return tbYear;
}
/// <summary>
/// 遍历根目录 ,获取专业名称
/// </summary>
/// <returns></returns>
public DataTable GetMajorName(string path)
{
DataTable tbMajor = new DataTable("专业表");
string[] arrPath = Directory.GetDirectories(path);
//添加表头
tbMajor.Columns.Add("major_id");
tbMajor.Columns.Add("major_url");
tbMajor.Columns.Add("major_name");
for (int i = 0; i < arrPath.Length; i++)
{
string[] arrSplit = arrPath[i].ToString().Split('\\');
tbMajor.Rows.Add(new object[] { i, arrPath[i], arrSplit[arrSplit.Length - 1] }); }
return tbMajor;
//string strMajor = "";
//DataTable tbMajor = new DataTable("专业表");
//tbMajor.Columns.Add("major_name");
//DirectoryInfo theDepInfo = new DirectoryInfo(path);
//foreach (DirectoryInfo folder in theDepInfo.GetDirectories())
//{
// strMajor += folder.Name + ",";
// tbMajor.Rows.Add(folder.Name);
//}
//return tbMajor;
}
/// <summary>
/// 获取专业文件夹下班级名称
/// </summary>
/// <param name="majorName">专业名称</param>
/// <returns></returns>
public DataTable GetClassName(string path)
{
DataTable tbClasses = new DataTable("班级表");
string[] arrPath = Directory.GetDirectories(path);
//添加表头
tbClasses.Columns.Add("class_id");
tbClasses.Columns.Add("class_url");
tbClasses.Columns.Add("class_name");
for (int i = 0; i < arrPath.Length; i++)
{
string[] arrSplit = arrPath[i].ToString().Split('\\');
tbClasses.Rows.Add(new object[] { i, arrPath[i], arrSplit[arrSplit.Length - 1] }); }
return tbClasses;
}
/// <summary>
/// 获取班级文件夹下班级名称
/// </summary>
/// <param name="majorName">专业名称</param>
/// <returns></returns>
public DataTable GetStudentName(string path)
{ DataTable tbStudents = new DataTable("学生信息表"); string[] arrPath = Directory.GetDirectories(path);
//添加表头
tbStudents.Columns.Add("_id");
tbStudents.Columns.Add("student_url");
tbStudents.Columns.Add("name");
tbStudents.Columns.Add("student_num");
tbStudents.Columns.Add("student_name");
tbStudents.Columns.Add("teacher");
tbStudents.Columns.Add("select_topic");
for (int i = 0; i < arrPath.Length; i++)
{
string[] arrSplit = arrPath[i].ToString().Split('\\');
string name = arrSplit[arrSplit.Length - 1];
if(name.Length<=0)
{
continue;
}
string []arrInfo=name.Split(new char[]{'_','-'});
if (arrInfo.Length < 4)
{
continue;
}
tbStudents.Rows.Add(new object[] { i, arrPath[i], name,arrInfo[0],arrInfo[1],arrInfo[2],arrInfo[3]});
}
return tbStudents; }

下面是使用了foreach,上面的看起来比较笨,但是专业性会更好一点

 /// <summary>
/// 获取专业文件夹下班级名称
/// </summary>
/// <param name="majorName">专业名称</param>
/// <returns></returns>
public DataTable GetClasses(string path,string majorName)
{
string strClasses = "";
DataTable tbClasses = new DataTable("班级表");
tbClasses.Columns.Add("class_name");
DirectoryInfo theDepInfo = new DirectoryInfo(rootDirectoryUrl);
foreach (DirectoryInfo folder in theDepInfo.GetDirectories())
{
strClasses += folder.Name + ",";
tbClasses.Rows.Add(new object[] { folder.Name }); }
return tbClasses;
}

[置顶] c#对于文件的操作的更多相关文章

  1. [置顶] SPL讲解(4)--Criteria操作篇

    概念 以前一篇文章中,描述了实体Entity的操作,很明显,仅仅实体的操作是远远不够的.如:我们经常会根据查询条件从数据库中获取记录集并绑定到DataGrid上,会根据条件进行批量的Update和De ...

  2. [置顶] Android资源文件分析

    1)修改开机默认壁纸 Android开机默认资源文件为:frameworks/base/core/res/res/values/config.xml 我们找到wallpaper行: <strin ...

  3. [置顶] Linux下文件和目录权限说明

    在Linux下使用ls -l或者ll命令可以查看文件和文件夹的权限.结果显示类似于: drwxrwxrwx,这里分为四组,分别为文件类型,文件所有者的权限(读写执行),文件所有者所在组用户的权限(读写 ...

  4. [置顶] Android中使用sqlite3操作SQLite

    SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.本文档提供一个样使用sqlite3的简要说明. 一.创建数据库:  1.将sqlit ...

  5. iOS UILabel 文字 置顶/置底 实现

    iOS UILabel控件默认文字位置是居中的,如图所示: 但是我们经常碰到这样的需求,希望文字向上置顶,或者向下置底,但是很遗憾,iOS API中并没有提供相应的属性和方法,需要我们手动设置. 利用 ...

  6. 窗口置顶 - 仿TopWind

    前置学习:低级鼠标hook,获得鼠标状态. 这个在原来获得鼠标状态的基础上,加上一个事件处理即可. TopWind就是一个可以置顶窗口的文件,避免复制粘贴的时候的来回切换(大窗口与小窗口),算是一个实 ...

  7. 006PHP文件处理—— 目录操作 删除目录 删除置顶类型文件

    <?php /** * 目录操作 删除目录 删除置顶类型文件 */ //echo rmdir('61') or die('目录删除失败'); //删除一个目录中有其他文件的内容的方法: //第1 ...

  8. 66.为什么有时候在ISE软件中,顶层文件不能置顶?

    什么时候回出现顶层文件不能置顶呢?嘿嘿,肯定是工程中有错误啦. 如果你的顶层文件包含了include文件,这个时候就会出现这种情况了.但好像出现在刚新建工程的时候,因为当顶层文件不包括Include文 ...

  9. vue 通过自定义指令实现 置顶操作;

    项目需求:要求当前项目每个页面滑到超出一屏的距离时,出现 backTop 按钮,点击则回到最顶端:俗称置顶操作: 因为涉及到的页面较多,每个页面都加肯定显得重复累赘,最终想到了 Vue 的自定义指令  ...

随机推荐

  1. MVC——数据库增删改查(Razor)——Html语法

    一.显示界面 .Models(模板) private MyDBDataContext _context = new MyDBDataContext(); public List<Info> ...

  2. C#中窗体的一些简单运用

    从今天开始,我们进入到学window form的知识,今天简单的学习了一些控件和事件的运用.没有什么很全面的理论,所以今天就总结下所写的程序.一个简单的注册页面程序   注册页面程序   要求:   ...

  3. 百万程序员的苦恼-选择VB.NET还是C#

    在过去的一年中,互联网上的各大讨论区或者电子邮件的讨论列表都对微软的VB.NET以及C#的各种优越性做了探讨.这些讨论围绕的主要问题就是,我应该先学哪一个,VB.NET还是C#?? 我写这篇文章的目的 ...

  4. BZOJ_3282_Tree_(LCT)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3282 给出n个点以及权值,四种操作: 0.求x,y路径上的点权值的异或和. 1.连接x,y. ...

  5. BrnShop开源网上商城第一讲:架构设计

    首先在此感谢大家对BrnShop项目的支持和鼓励!我们在发布BrnShop以前曾推测项目会受到不少园友的支持,但没想到园友们的支持大大超过我们的预测.4天6000次浏览,140个推荐,170个评论,8 ...

  6. ruby编程语言-学习笔记2(第4章 表达式和操作符)

    对属性和数组元素的赋值 o.m + = 1  ===>o.m = (o.m()+ 1)  # 对 o.m()这个方法的结果+1 对数组元素的赋值也是通过 方法调用来完成. 0.[] = 1 == ...

  7. 基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页快捷方式(Ⅲ)

    上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 登录窗口>,主要是介绍系统登录界面页面设计与代码. 最近刚做完施工计划安排设计,之后将分享出来,这个系列更新不是很快,望 ...

  8. POJ 2449

    #include<queue> #include<cstdio> #include<string> #include<cstring> #include ...

  9. POJ 1185 (状态压缩DP)

    中文题目,题意就不说了. 不得不说这是一道十分经典的状态压缩DP的题目. 思路: 通过分析可以发现,第i行的格子能不能放大炮仅与第i-1和i-2行的放法有关,而与前面的放法无关,因此,如果我们知道了i ...

  10. nyoj 84阶乘后0的个数

    描述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100)每组测试数据占一行,都只有一个整数M(0<=M<=10000000) ...