千家信息网

如何将文本文件内容存储在DataSet

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"如何将文本文件内容存储在DataSet",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何将文本文件内容存储在DataSet"这篇
千家信息网最后更新 2026年11月01日如何将文本文件内容存储在DataSet

这篇文章主要为大家展示了"如何将文本文件内容存储在DataSet",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何将文本文件内容存储在DataSet"这篇文章吧。

项目中比较多的会对文件进行操作,例如文件的上传下载,文件的压缩和解压等IO操作。在.NET项目中较多的会使用DataSet,DataTable进行数据的缓存。

项目中对文本文件的操作比较简单,但是如果需要将文本文件的内容写入系统的缓存中,操作起来,会稍微的繁琐一些。现在总结一个较为通用的方法,将文本文件的内容缓存进入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(IReadOnlyList lines, 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(IReadOnlyList lines, 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);        }

以上是"如何将文本文件内容存储在DataSet"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 内容 文本 存储 数据 篇文章 缓存 项目 数组 学习 帮助 繁琐 上传下载 方法 易懂 更多 条理 知识 系统 编带 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技类互联网 深圳齐家互联网科技 广西互联网科技公司 狮子座互联网科技培训 哈尔滨秒房互联网科技有限公司 互联网 科技馆 北京大学互联网科技怎么样 科技与互联网哪个更好 互联网金融科技公司干啥的 坤平互联网科技 广西互联网科技孵化中心 互联网行业科技股 杭州披云加互联网科技有限公司 宇信科技在杭州互联网排第几 下一代互联网重大应用科技园 版纳互联网科技选哪家 兰石爱特工业互联网科技分公司 重庆科技产业互联网有哪些 利用互联网等科技手段 科技发展第三阶段互联网时代 保险科技 互联网保险 新华互联网科技学院 互联网科技英文翻译 互联网教育科技公司vipkid 全球顶尖互联网科技公司 荆州市昕露互联网络科技有限公司 湖南一路畅行互联网科技 互联网科技企业商标注意事项 悟空问答互联网科技 颐高云石互联网科技
0