<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
        主站蜘蛛池模板: 久久精品免费观看| 手机永久免费的AV在线电影网| 国产A∨免费精品视频| 亚洲高清免费视频| 在线播放国产不卡免费视频| 日韩免费高清视频| 黄色一级毛片免费看| 日本免费人成黄页在线观看视频 | 涩涩色中文综合亚洲| 99在线精品视频观看免费| 亚洲丰满熟女一区二区v| 成人免费福利电影| 黄页网址在线免费观看| 亚洲精品无码永久中文字幕| 免费一区二区三区| 亚洲另类图片另类电影| 成人免费视频观看无遮挡| 特黄特色的大片观看免费视频| 亚洲色无码一区二区三区| 午夜视频在线免费观看| 亚洲国产高清美女在线观看| 性色av无码免费一区二区三区| 老司机午夜在线视频免费观| 亚洲欧洲无码AV电影在线观看 | 亚洲电影国产一区| 久久久久亚洲AV无码去区首 | 国产精品高清全国免费观看| 成人国产网站v片免费观看| 亚洲国产成人片在线观看| 亚洲高清免费在线观看| 亚洲爆乳无码专区www| 国产亚洲成人久久| 18禁超污无遮挡无码免费网站国产| 思思久久99热免费精品6| 亚洲精品中文字幕麻豆| 亚洲成av人片不卡无码久久| 在线观看特色大片免费网站| 亚洲高清国产拍精品熟女| 亚洲一区二区三区自拍公司| 成人黄软件网18免费下载成人黄18免费视频| 免费人成网站永久|