[置顶] c#对于文件的操作
在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#对于文件的操作的更多相关文章
- [置顶] SPL讲解(4)--Criteria操作篇
概念 以前一篇文章中,描述了实体Entity的操作,很明显,仅仅实体的操作是远远不够的.如:我们经常会根据查询条件从数据库中获取记录集并绑定到DataGrid上,会根据条件进行批量的Update和De ...
- [置顶] Android资源文件分析
1)修改开机默认壁纸 Android开机默认资源文件为:frameworks/base/core/res/res/values/config.xml 我们找到wallpaper行: <strin ...
- [置顶] Linux下文件和目录权限说明
在Linux下使用ls -l或者ll命令可以查看文件和文件夹的权限.结果显示类似于: drwxrwxrwx,这里分为四组,分别为文件类型,文件所有者的权限(读写执行),文件所有者所在组用户的权限(读写 ...
- [置顶] Android中使用sqlite3操作SQLite
SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.本文档提供一个样使用sqlite3的简要说明. 一.创建数据库: 1.将sqlit ...
- iOS UILabel 文字 置顶/置底 实现
iOS UILabel控件默认文字位置是居中的,如图所示: 但是我们经常碰到这样的需求,希望文字向上置顶,或者向下置底,但是很遗憾,iOS API中并没有提供相应的属性和方法,需要我们手动设置. 利用 ...
- 窗口置顶 - 仿TopWind
前置学习:低级鼠标hook,获得鼠标状态. 这个在原来获得鼠标状态的基础上,加上一个事件处理即可. TopWind就是一个可以置顶窗口的文件,避免复制粘贴的时候的来回切换(大窗口与小窗口),算是一个实 ...
- 006PHP文件处理—— 目录操作 删除目录 删除置顶类型文件
<?php /** * 目录操作 删除目录 删除置顶类型文件 */ //echo rmdir('61') or die('目录删除失败'); //删除一个目录中有其他文件的内容的方法: //第1 ...
- 66.为什么有时候在ISE软件中,顶层文件不能置顶?
什么时候回出现顶层文件不能置顶呢?嘿嘿,肯定是工程中有错误啦. 如果你的顶层文件包含了include文件,这个时候就会出现这种情况了.但好像出现在刚新建工程的时候,因为当顶层文件不包括Include文 ...
- vue 通过自定义指令实现 置顶操作;
项目需求:要求当前项目每个页面滑到超出一屏的距离时,出现 backTop 按钮,点击则回到最顶端:俗称置顶操作: 因为涉及到的页面较多,每个页面都加肯定显得重复累赘,最终想到了 Vue 的自定义指令 ...
随机推荐
- Android开发UI之android:gravity / android:layout_Gravity,android:padding / android:layout_margin属性区分
android:gravity / android:layout_Gravity区别: android:gravity 是设置该view里面的内容相对于该view的位置,例如设置button里面的te ...
- bzoj2756
看到相邻格子都+1的操作一下就想到黑白染色了相邻格子都+1说明不管怎么弄,黑格子的总和和白格子总和的差总是定值这里首先要注意,最后不一定变成的是所有元素中的最大值,可能比它大比如 1 2 2 ...
- BZOJ1324: Exca王者之剑
1324: Exca王者之剑 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 256 Solved: 131[Submit][Status] Desc ...
- Java开发心得
1. Spring概述 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性由Rod Johnson创建的.框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J ...
- FZU2090 旅行社的烦恼 巧妙floyd 最短路
分析:floyd看似很好理解,实际上是状态转移,具体的解释参照这里 http://www.cnblogs.com/chenying99/p/3932877.html 深入理解了floyd后,这个题就可 ...
- HDU-1036 Average is not Fast Enough!
Average is not Fast Enough! http://acm.hdu.edu.cn/showproblem.php?pid=1036 Problem Description A rel ...
- Storm系列(四)Topology提交校验过程
功能:提交一个新的Topology,并为Topology创建storm-id(topology-id),校验其结构,设置必要的元数据,最后为Topology分配任务. 实现源码: 1 ); Conf ...
- about云资源汇总V1,3
mongodb文档与视频资料分享 1.mongodb1-72.mongodb8-17集含代码3.MongoDB_and_Python学习笔记4.深入学习MongoDb5.PHP&MongoDB ...
- 《Introduction to Algorithm》-chaper30-多项式与快速傅里叶变换
两个n次多项式的相加最直接的方法所需要的时间是O(n),而实现两个n次多项式的乘法的直接方法则需要O(n^2),本章讨论的快速傅里叶变换(FFT),将会将这一过程的时间复杂度降至O(nlogn).同时 ...
- NSAutoreleasePool' is unavailable: not avail
NSAutoreleasePool' is unavailable: not available in automatic reference counting mode 这我就纠结了,对着书敲都出问 ...