.NET中将文本文件的内容存储到DataSet的方法
发表于:2023-03-21 作者:安全数据网编辑
编辑最后更新 2023年03月21日,小编给大家分享一下.NET中将文本文件的内容存储到DataSet的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言项
小编给大家分享一下.NET中将文本文件的内容存储到DataSet的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
前言
项目中对文本文件的操作比较简单,但是如果需要将文本文件的内容写入系统的缓存中,操作起来,会稍微的繁琐一些。现在总结一个较为通用的方法,将文本文件的内容缓存进入DataSet数据集中,我们直接来看示例代码吧。
示例代码
private DataSet _iifSet; ////// 将文本文件转化为DataSet /// /// ///public DataSet Parse(string filePath) { if (string.IsNullOrEmpty(filePath)) { throw new ArgumentNullException(filePath); }try { _iifSet = new DataSet(); var fileText = System.IO.File.ReadAllText(filePath); var lines = fileText.Split('\n'); CreateTables(lines, _iifSet); FillSet(lines, _iifSet); return _iifSet; } catch (IOException ex) { throw new IOException(ex.Message); } } /// /// 读取行数组并将其解析为数据集的表 /// /// String iif文件中的行数组 /// private void FillSet(IReadOnlyListlines, DataSet set) { for (var i = 0; i < lines.Count; i++) { if (IsTableHeader(lines[i])) { continue; } if (lines[i] == "" || lines[i] == "\r" || lines[i] == "\n\r" || lines[i] == "\n") { continue; } if (lines[i].IndexOf(";__IMPORTED__", StringComparison.Ordinal) != -1) { continue; } var line = lines[i]; while (!IsFullLine(line, set)) { i++; line += lines[i]; } ParseRecord(line, set); } } /// /// 解析记录 /// /// /// private void ParseRecord(string line, DataSet set) { if (IsTableHeader(line)) { return; } var tablename = line.Split('\t')[0]; var parameters = CreateDataRowParams(line, set.Tables[tablename].Columns.Count); if (parameters.Length > 0) set.Tables[tablename].Rows.Add(parameters); } private bool IsFullLine(string line, DataSet set) { if (IsTableHeader(line)) { return true; } var values = line.Split('\t').Length; var tableName = line.Split('\t')[0]; var columns = set.Tables[tableName].Columns.Count; return values >= columns; } private bool IsTableHeader(string tab) { return tab.StartsWith("!"); } ////// 创建datatable /// /// /// private void CreateTables(IReadOnlyListlines, DataSet set) { foreach (var t in lines.Where(IsTableHeader)) { set.Tables.Add(CreateTable(t)); } } private DataTable CreateTable(string line) { var values = line.Split('\t'); values[0] = values[0].Substring(1); var dt = new DataTable(values[0]); values[0] = null; foreach (var name in values) { if (string.IsNullOrEmpty(name)) continue; var dc = new DataColumn(name, typeof(string)); try { dt.Columns.Add(dc); } catch (DuplicateNameException) { dc = new DataColumn(name + "_duplicateCol" + dt.Columns.Count); dt.Columns.Add(dc); } } return dt; } public string GetTableName(string line) { var values = line.Split('\t'); if (values[0].StartsWith("!")) { values[0] = values[0].Substring(1); } return values[0]; } public readonly static object[] EmptyStringArray = { }; private object[] CreateDataRowParams(string line, int maxLength) { var raw = line.Split('\t'); var length = raw.Length - 1; if (length == 0 || maxLength == 0) return EmptyStringArray; if (length > maxLength) length = maxLength; var values = new string[length]; for (var i = 0; i < length; i++) { values[i] = raw[i + 1]; } if (values[values.Length - 1].EndsWith("\n")) { values[values.Length - 1] = values[values.Length - 1].Substring(0, values[values.Length - 1].LastIndexOf('\n')); } else if (values[values.Length - 1].EndsWith("\n\r")) { values[values.Length - 1] = values[values.Length - 1].Substring(0, values[values.Length - 1].LastIndexOf("\n\r", StringComparison.Ordinal)); } else if (values[values.Length - 1].EndsWith("\r")) { values[values.Length - 1] = values[values.Length - 1].Substring(0, values[values.Length - 1].LastIndexOf('\r')); } return values; } protected virtual void Dispose(bool cleanAll) { _iifSet?.Dispose(); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); }
以上是".NET中将文本文件的内容存储到DataSet的方法"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
普及网络安全法的重要性
学校九大网络安全领导小组
网络安全主题板书
国家网络安全文化墙
海南君军互联网科技有限公司
畅流客户端找不到服务器
为啥通话过程中无法连接服务器
附加数据库文件位置
重庆科技学院网络技术大赛试题
武汉芯动科技是互联网公司吗
电力监控系统网络安全通讯稿
微信支付服务器怎么选
将域名解析到域服务器
数据库建表日期字段
万游数据库编辑器
mc服务器小麦农场半自动
怀旧服怎么找一个服务器
pg数据库怎么导入sql文件
大数据及数据库ppt
2.服务器管理规范 安全
梦幻西游角色服务器怎么删除
新疆 网络安全 挑战
计算机网络技术方面求职信
深圳搜房网络技术有限公司
网络安全如何打击犯罪
网络安全检查工作效果
网络安全和犯罪
网络安全工程师对年龄的要求
东莞社交软件开发外包
服务器电源ATX电路图