<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        .NET中如何將文本文件的內(nèi)容存儲到DataSet

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:36:22
        文檔

        .NET中如何將文本文件的內(nèi)容存儲到DataSet

        .NET中如何將文本文件的內(nèi)容存儲到DataSet:前言 項目中對文本文件的操作比較簡單,但是如果需要將文本文件的內(nèi)容寫入系統(tǒng)的緩存中,操作起來,會稍微的繁瑣一些。現(xiàn)在總結(jié)一個較為通用的方法,將文本文件的內(nèi)容緩存進入DataSet數(shù)據(jù)集中。下面話不多說了,我們直接來看示例代碼吧。 示例代碼 priv
        推薦度:
        導(dǎo)讀.NET中如何將文本文件的內(nèi)容存儲到DataSet:前言 項目中對文本文件的操作比較簡單,但是如果需要將文本文件的內(nèi)容寫入系統(tǒng)的緩存中,操作起來,會稍微的繁瑣一些。現(xiàn)在總結(jié)一個較為通用的方法,將文本文件的內(nèi)容緩存進入DataSet數(shù)據(jù)集中。下面話不多說了,我們直接來看示例代碼吧。 示例代碼 priv

        前言

        項目中對文本文件的操作比較簡單,但是如果需要將文本文件的內(nèi)容寫入系統(tǒng)的緩存中,操作起來,會稍微的繁瑣一些。現(xiàn)在總結(jié)一個較為通用的方法,將文本文件的內(nèi)容緩存進入DataSet數(shù)據(jù)集中。下面話不多說了,我們直接來看示例代碼吧。

        示例代碼

         private DataSet _iifSet;
        
         /// <summary>
         /// 將文本文件轉(zhuǎn)化為DataSet
         /// </summary>
         /// <param name="filePath"></param>
         /// <returns></returns>
         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);
         }
         
         }
        
         /// <summary>
         /// 讀取行數(shù)組并將其解析為數(shù)據(jù)集的表
         /// </summary>
         /// <param name="lines">String iif文件中的行數(shù)組</param>
         /// <param name="set"></param>
         private void FillSet(IReadOnlyList<string> 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);
         }
         }
        
         /// <summary>
         /// 解析記錄
         /// </summary>
         /// <param name="line"></param>
         /// <param name="set"></param>
         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("!");
         }
        
        
         /// <summary>
         /// 創(chuàng)建datatable
         /// </summary>
         /// <param name="lines"></param>
         /// <param name="set"></param>
         private void CreateTables(IReadOnlyList<string> 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);
         }

        總結(jié)

        好了,本文的內(nèi)容到這就結(jié)束了,有關(guān)dataset的一些常用的操作,基本屬性和方法在這里就不做介紹了。希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        .NET中如何將文本文件的內(nèi)容存儲到DataSet

        .NET中如何將文本文件的內(nèi)容存儲到DataSet:前言 項目中對文本文件的操作比較簡單,但是如果需要將文本文件的內(nèi)容寫入系統(tǒng)的緩存中,操作起來,會稍微的繁瑣一些。現(xiàn)在總結(jié)一個較為通用的方法,將文本文件的內(nèi)容緩存進入DataSet數(shù)據(jù)集中。下面話不多說了,我們直接來看示例代碼吧。 示例代碼 priv
        推薦度:
        標簽: 保存到 文件 中的
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 91免费国产在线观看| 9277手机在线视频观看免费| 亚洲av日韩av永久无码电影| 国产亚洲精品2021自在线| 国产在线观看免费视频软件| 久久久久国产精品免费看| 四虎免费在线观看| 亚洲精品无码精品mV在线观看| 亚洲美女视频一区二区三区| 羞羞视频免费观看| 久久ww精品w免费人成| 亚洲an天堂an在线观看| 无遮挡a级毛片免费看| 亚洲午夜免费视频| 亚洲激情在线观看| 深夜福利在线免费观看| 国产偷国产偷亚洲高清日韩| 亚洲国产成人久久77| 国产福利在线观看永久免费| 18gay台湾男同亚洲男同| 野花香在线视频免费观看大全| 蜜桃精品免费久久久久影院| 亚洲日韩小电影在线观看| 亚洲丁香婷婷综合久久| 99爱免费观看视频在线| 又粗又大又硬又爽的免费视频| 久久综合亚洲色HEZYO社区 | 亚洲中文字幕在线乱码| 亚洲看片无码在线视频| 真人做A免费观看| 亚洲AV无码一区二区三区电影| 亚洲国产成人久久综合区| 亚洲中文字幕久久久一区| 久久午夜夜伦鲁鲁片免费无码影视| 中文字幕亚洲无线码a| 青青草无码免费一二三区| 亚洲人成图片网站| 伊人久久综在合线亚洲91| 中文字幕免费在线| 免费无码国产V片在线观看| 亚洲影院在线观看|