.NET中将文本文件的内容存储到DataSet的方法
发表于:2022-08-11 作者:安全数据网编辑
编辑最后更新 2022年08月11日,小编给大家分享一下.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是什么性能
180482与服务器版本不一致
服务器面板管理方法
aspx服务器软件
学生网络安全会议上讲话
正版数据库的密钥
江苏服务器防火墙现货
微软软件开发工具包可以删除吗
计算机三级网络技术书目
windows2008服务器
电脑和通信服务器连接配置
数据库表表
苹果手机怎么联服务器
一个软件可以装两个服务器吗
软件开发和反编译是一起的吗
萌新长久服务器
正当防卫4连接服务器没反应
网络安全e讲堂
软件开发个人资料
郑州服务器回收近期行情
群晖的服务器删除数据如何找回
扬州萌翻星互联网科技有限公司
服务器租用入什么科目
大唐天下服务器停了
什么叫大烟花服务器
华为5g 网络安全
搜索引擎是数据库的应用吗
探讨未成年人网络安全保护问题
正当防卫4连接服务器没反应
学校服务器与大佬服务器差距图
网络安全学习期刊