在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. 百万程序员的苦恼-选择VB.NET还是C#

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

  2. MCI音乐播放

    缘由: 在改正俄罗斯方块程序的功能的时候,想给这个程序增加一个背景音乐.本想用PlayWave来做的,但想到这个功能十分常用,那还不如封装一个自己的CMusic 类,以备不时之需.本来以为很容易的,可 ...

  3. c语言字符类别测试库函数#include<ctype.h>

    字符类测试<ctype.h> 头文件<ctype.h>中说明了一些用于测试字符的函数.每个函数的变量均为int类型,变量的值必须是EOF或可用unsigned char类型表示 ...

  4. Ubuntu Broadcom无线网卡驱动安装

    刚装的Ubuntu,发现Broadcom无线网卡没工作, 原来手贱,在liveCD 把wireless禁用了,  ubuntu所以认为你机器,没有wireless模块,所以就没有安装wireless驱 ...

  5. android中如何实现离线缓存

    离线缓存就是在网络畅通的情况下将从服务器收到的数据保存到本地,当网络断开之后直接读取本地文件中的数据. 将网络数据保存到本地: 你可以自己写一个保存数据成本地文件的方法,保存在android系统的任意 ...

  6. Async callback to awaitable Task<> z

    http://blog.tedd.no/2013/09/13/async-callback-to-awaitable-task/ The Async-Await feature in .Net is ...

  7. POJ2236 Wireless Network 并查集

    水题 #include<cstdio> #include<cstring> #include<queue> #include<set> #include ...

  8. 设计模式_Adapt

    一个形象的例子: (ADAPTER)在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sa ...

  9. 【CSS】Intermediate2:Grouping and Nesting

    1.Grouping 2.Nesting If the CSS is structured well, there shouldn’t be a need to use many class or I ...

  10. shell 从文件按行读

    #!/bin/shheart=/archlog2/archive_2/heartbeatwhile truedofor file in `cat $heart`;doecho "wei xi ...