[置顶] 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 的自定义指令 ...
随机推荐
- hdu4681String
http://acm.hdu.edu.cn/showproblem.php?pid=4681 枚举A串和B串包含C串的区间 枚举区间端点算左右两端最长公共子序 #include <iostre ...
- GridView導出Excel 解決亂碼問題
Response.Clear(); Response.Charset = "gb2312"; Response.Buffer = true; Response.AddHeader( ...
- 利用 Dolby® Digital Plus 提供优质音频体验
John Deutscher Azure媒体服务首席项目经理 随着媒体设备的增多,一项日益增长的需求是,视频流服务能够向用户提供超高音频质量和具有 5.1 环绕音响的优质内容.通过 Azure媒体 ...
- TinyXml和tinyxml2
C++操作xml没有标准库的支持,TinyXml是个不错的xml操作库,以前总是使用TinyXml读写xml,但是最近对大量xml进行读写时,速度真的是有点慢,特别是在调试时,每次启动读xml就要好长 ...
- SPOJ3267 D-query 离线+树状数组 在线主席树
分析:这个题,离线的话就是水题,如果强制在线,其实和离线一个思路,然后硬上主席树就行了 离线的代码 #include <iostream> #include <stdio.h> ...
- [codevs2152]滑雪
题目来源 http://www.tyvj.cn/p/1004 http://www.luogu.org/problem/show?pid=1434# http://codevs.cn/problem/ ...
- HNU 13375 Flowery Trails (spfa最短路)
求最短路径覆盖的全部边权值和. 思路:分别从起点和终点两次求最短路,再比较两个点到起点的距离和他们之间的权值相加和是否等于最短路径. 这题很好 #include <cstring> #in ...
- POJ1050:To the max
poj1050:http://poj.org/problem?id=1050 * maximum-subarray 问题的升级版本~ 本题同样是采用DP思想来做,同时有个小技巧处理:就是把二维数组看做 ...
- C# WinForm多线程(三)---- Control.Invoke[转]
开发中遇到更新Winform中控件假死问题,通过看了这篇文章了解了原理,感谢!此处标记起来,以备查看! 原文地址:http://www.cnblogs.com/joechen/archive/2009 ...
- 问题-提示“adodataset.command”
问题现象:提示“adodataset.command” 问题原因:原因不明,希望高人指点. 问题处理:如果报adodataset.command ,如果忽略将删除控件的错误时,你应该可以看一看是不是在 ...