免费国产网站_秋霞午夜一区二区三区视频_99热在线看_日韩精品久久一区二区_午夜看一级毛片_天天鲁在视频在线观看

  • 您的位置:首頁 > 新聞動態(tài) > Unity3D

    UNITY3D讀寫CVS格式文件錄制與存儲數(shù)據(jù)手套數(shù)據(jù)

    2019/11/12??????點擊:
    說明:

    1.寫入一個單元格時,如果含有逗號,則需要將整個字段用雙引號括起來;如果里面還有雙引號就替換成兩個雙引號。

    2.寫入一行時,末尾要加上\r\n作為行分隔符。

    3.讀取時,也要根據(jù)上面的寫入規(guī)則進行解析。

    直接看代碼:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    
    public class CSVTool {
    
        private static char _csvSeparator = ',';
        private static bool _trimColumns = false;
    
        //獲取一個單元格的寫入格式
        public static string GetCSVFormat(string str)
        {
            string tempStr = str;
            if (str.Contains(","))
            {
                if (str.Contains("\""))
                {
                    tempStr = str.Replace("\"", "\"\"");
                }
                tempStr = "\"" + tempStr + "\"";
            }
            return tempStr;
        }
    
        //獲取一行的寫入格式
        public static string GetCSVFormatLine(ListstrList)
        {
            string tempStr = "";
            for (int i = 0; i < strList.Count - 1; i++)
            {
                string str = strList[i];
                tempStr = tempStr + GetCSVFormat(str) + ",";
            }
            tempStr = tempStr + GetCSVFormat(strList[strList.Count - 1]) + "\r\n";
            return tempStr;
        }
    
        //解析一行
        public static ListParseLine(string line)
        {
            StringBuilder _columnBuilder = new StringBuilder();
            ListFields = new List();
            bool inColumn = false;  //是否是在一個列元素里
            bool inQuotes = false;  //是否需要轉(zhuǎn)義
            bool isNotEnd = false;  //讀取完畢未結(jié)束轉(zhuǎn)義
            _columnBuilder.Remove(0, _columnBuilder.Length);
            //空行也是一個空元素,一個逗號是2個空元素
            if (line == "")
            {
                Fields.Add("");
            }
            // Iterate through every character in the line
            for (int i = 0; i < line.Length; i++)
            {
                char character = line[i];
                // If we are not currently inside a column
                if (!inColumn)
                {
                    // If the current character is a double quote then the column value is contained within
                    // double quotes, otherwise append the next character
                    inColumn = true;
                    if (character == '"')
                    {
                        inQuotes = true;
                        continue;
                    }
                }
                // If we are in between double quotes
                if (inQuotes)
                {
                    if ((i + 1) == line.Length)//這個字符已經(jīng)結(jié)束了整行
                    {
                        if (character == '"') //正常轉(zhuǎn)義結(jié)束,且該行已經(jīng)結(jié)束
                        {
                            inQuotes = false;
                            continue;     //當(dāng)前字符不用添加,跳出后直結(jié)束后會添加該元素
                        }
                        else //異常結(jié)束,轉(zhuǎn)義未收尾
                        {
                            isNotEnd = true;
                        }
                    }
                    else if (character == '"' && line[i + 1] == _csvSeparator) //結(jié)束轉(zhuǎn)義,且后面有可能還有數(shù)據(jù)
                    {
                        inQuotes = false;
                        inColumn = false;
                        i++; //跳過下一個字符
                    }
                    else if (character == '"' && line[i + 1] == '"') //雙引號轉(zhuǎn)義
                    {
                        i++; //跳過下一個字符
                    }
                    else if (character == '"') //雙引號單獨出現(xiàn)(這種情況實際上已經(jīng)是格式錯誤,為了兼容可暫時不處理)
                    {
                        throw new Exception("格式錯誤,錯誤的雙引號轉(zhuǎn)義");
                    }
                    //其他情況直接跳出,后面正常添加
                }
                else if (character == _csvSeparator)
                    inColumn = false;
                // If we are no longer in the column clear the builder and add the columns to the list
                if (!inColumn) //結(jié)束該元素時inColumn置為false,并且不處理當(dāng)前字符,直接進行Add
                {
                    Fields.Add(_trimColumns ? _columnBuilder.ToString().Trim() : _columnBuilder.ToString());
                    _columnBuilder.Remove(0, _columnBuilder.Length);
                }
                else // append the current column
                    _columnBuilder.Append(character);
            }
            //(標(biāo)準(zhǔn)格式一行結(jié)尾不需要逗號結(jié)尾,而上面for是遇到逗號才添加的,為了兼容還要添加一次)
            if (inColumn)
            {
                if (isNotEnd)
                {
                    _columnBuilder.Append("\r\n");
                }
                Fields.Add(_trimColumns ? _columnBuilder.ToString().Trim() : _columnBuilder.ToString());
            }
            else  //如果inColumn為false,說明已經(jīng)添加,一個字符為分隔符,所以后面要加上一個空元素
            {
                Fields.Add("");
            }
            return Fields;
        }
        //讀取文件
        public static ListRead(string filePath, Encoding encoding)
        {
            Listresult = new List();
            string content = File.ReadAllText(filePath, encoding);
            string[] lines = content.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < lines.Length; i++)
            {
                Listline = ParseLine(lines[i]);
                result.Add(line);
            }
            return result;
        }
        //寫入文件
        public static void Write(string filePath, Encoding encoding, Listresult)
        {
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < result.Count; i++)
            {
                Listline = result[i];
                builder.Append(GetCSVFormatLine(line));
            }
            File.WriteAllText(filePath, builder.ToString(), encoding);
        }
    
        //打印
        public static void Debug(Listresult)
        {
            for (int i = 0; i < result.Count; i++)
            {
                Listline = result[i];
                for (int j = 0; j < line.Count; j++)
                {
                    UnityEngine.Debug.LogWarning(line[j]);
                }
            }
        }
    }

    關(guān)于UNITY的路徑有4個類型:

    Application.dataPath:該路徑指向我們Unity編輯器的Asset文件夾

    Application.persistentDataPath:該路徑指向iOS和Android的沙盒路徑

    Application.streamingAssetsPath:streamingAsset文件夾路徑,在任何平臺都可以通過這個路徑讀取到文件夾里的內(nèi)容

    Application.temporaryCachePath:臨時數(shù)據(jù)文件路徑


    主站蜘蛛池模板: 亚洲最大成人免费网站_日本不卡二三区_午夜理论片YY6080影院_欧美激情网站_无码流畅无码福利午夜_老太脱裤子让老头玩xxxxx | 免费观看麻豆_国产在线精品成人一区二区三区_婷婷五月综合人人网_成人毛片无码一区二区三区_91原创精品_青青草免费网站 | 中文在线不卡_欧美黑寡妇AAAAA片_在线日本视频_亚洲av视频在线观看_国产三极片_麻豆传媒在线播放 | 青青青青操_天天躁狠狠躁夜夜躁2016琪琪_色av网址_在线观看av中文_精品欧美一区二区三区免费观看_freegaysexvideos男男中国 | 国产乱人伦偷精品视频下_人妻丰满熟妇av无码区_天天操操夜夜操操_91精品国产一_欧美日韩免费在线视频_五月综合色婷婷在线观看 | 日韩精品视频在线_亚洲精品久久久久午夜_日本黄视频在线观看_91免费视频在线_九一视频在线播放_一级片网 | 中文字幕影视免费观看_激情内射人妻1区2区3区_日韩精品麻豆_另类尿喷潮videofree_欧美日韩在线综合_18pao强力打造免费视频基地 | 91porny丨首页入口在线_久久毛毛片_国产日产一区二区三区久久久久久_正在播放一区_久久高清一区二区_久久精品国产亚洲AV无码麻豆 | 日本五级片_久久久精品视频成人_国产又色又爽又黄刺激视频_国产女极品在线观看AV_欧美亚洲国产激情_97色免费视频 | 久久久久久久久毛片_日本一区二区视频免费观看_91精品国产99久久久_欧美一区二区在线免费观看_中国美女一区二区三区_免费人成A片在线观看免费 | 亚洲资源视频_国产情侣真实露脸在线_四色av网站入口_日本一区二区三区日本免费_国产91天堂素人系列在线播放_欧美gv在线 | 亚洲伦乱视频_chinese乱子伦XXXX_亚洲国产无码在线观看_日韩在线播放一区_欧美日韩在线观看不卡_九色综合婷婷综合 | 久久99国产精品成人_红杏网站永久免费视频入口_美女视频黄的_白丝无内液液酱视频在线观看_无码专区中文无码野外_在线成人国产天堂精品av | 草的我好爽视频_男操女视频网站_亚洲精品区M_91麻豆麻豆_波多野结衣高清一区二区三区_欧美最猛黑人XXXX | 天天色天天拍_久久精品亚洲欧美日韩精品中文字幕_伊人久久久综合_又黄又大又色又爽又刺激的视频在线观看_国产成人无码免费视频97_日本丰满人妻XXXXXHD | 欧美黄片免费观看_久久91视频观看_黄色星星_黄色视屏免费看_国产精品美女自拍视频_yp在线 | 日日碰狠狠添天天爽超碰97_人人妻人人做人人爽精品_久久亚洲精选_欧美a一区_妇欲欢公爽公妇精品_av资源在线观看免费高清 | 97精品国产91久久久久久久_久草视频在线观_精品久久一区二区三区_超碰在线18_亚洲欧美日韩成人一区_男女啪啪高潮激烈免费版 | 粉嫩av一区二区三区免费_亚洲观看视频_美国黄色毛片_亚洲1页_一级免费视频_很黄很湿的免费毛片 | 亚洲资源在线观看_成人国产片_亚洲毛片在线免费观看_国产精品久久久久精囗交_国产偷自视频区视频_欧美亚洲人成网站 | 日韩久久精品一区_夜色爽爽爽久久精品日韩_亚洲一线二线三线AV无码_国产乱码精品一区二区三区蜜臀_诡异时代全球动漫免费观看_91超碰青青频精品国产 | 大学生不戴套毛片视频_欧美一级视频免费观看_国产美女亚洲精品7777_91插插插影库永久免费_久久99在线_精品免费一区二区三区在线 | 亚洲午夜精品久久久久久性色_被夫上司強暴人妻中文字幕_国产欧美自拍视频_嫩草影院网站_又黄又爽又猛午夜性色播_久热久草 | 国产极品在线播放_av视屏在线播放_免费看成人A片无码视频尤物_俄罗斯胖老太牲交_亚洲AV无码成人网站久久精品大_91亚洲国产成人精品一区二三 | 96av麻豆蜜桃一区二区_国产综合精品女在线观看_www色综合_国产精品不卡在线观看_久久精品国产国产精_极品少妇ⅩXXXⅩ护士 | 粉色午夜视频_国产91精品一区_caopo在线_H无码精品视频在线观看网站_免费啪啪小视频_欧美xxxxxbb | 国产免费无遮挡在线观看视频_在线观看视频二区_中文字幕第十一页_国产精品成人片在线观看_www.91成人_国产成人亚洲综合色婷婷秒播 | 亚洲精品一卡2卡3卡四卡乱码_国产精品久久在线观看_性xxxxfreexxxxx欧美牲交_大地资源高清在线观看免费新浪_夜夜欢性恔免费视频_在线观看精品自拍私拍 | www.久久久久久久久_caopro超碰国产高清_91视频com_91色视频在线_亚洲成人涩涩_无码人妻丝袜在线视频 | 日本高清在线观看_99草在线观看_91精品国产综合久久国产大片_少妇avⅰ性毛片_久艹福利_亚洲精选视频在线 | 性少妇videosexfreexxxx_亚洲一区自拍偷拍_亚洲人成日韩中文字幕不卡_国产在线不卡观看_免费视频成人片在线观看_国产精品久久人 | avtt综合网_免费看我的前半生_在线香蕉视频_亚洲最大成人综合网_无码精品人妻一区二区三区人妻斩_色人综合 | 成人激情春色网_国产精品欧美日韩在线观看_91女神在线_天天爽天天操_日本xx视频免费观看_日本国产高清不卡 | 一级黄色a大片_成年视频在线观看免费_少妇午夜一级艳片欧美精品_久久9热_亚洲欧美国产国产一区二区三区_国产xxxxav 国产高潮白浆喷水_久久精品99av高久久精品_av网站网址在线观看_91麻豆久久久_18禁人看免费无遮挡网站不卡_午夜成人性刺激免费视频 | 欧美人与性口牲恔配视1_男生和女生插插视频_一区二区三区四区五区视频_美女视频又黄又免费_免费少妇a级毛片人成网_2021国产麻豆剧果冻传媒影视 | 中文有码人妻字幕在线_97在线免费看视频_美女视频一区二区三区_成年女人毛片免费中文_91色哟哟_中日韩一区 | 天无日天天射天天视_老司机一区_国产AV办公室丝袜秘书_欧美日韩精品久久久久_人人干超碰_成人h精品动漫一区二区三区 | 特级毛片免费播放_91久久一区二区偷怕_久久精品免费在线_色婷婷一级片_热久久网站_成人a在线 | 亚洲激情网站_亚洲首页_国产麻豆福利av在线播放_特级a级毛片_国产精品A∨一区二区三区_精品国产视频 | 国产99视频精品免费视频36_www.波多野结衣.com_国产a级一级片_福利看片盒子永久国产_日韩精品久久久久久久九岛_亚洲九九免费视频 | 91视频国产区_国内精品一级毛片_青青草原国产免费AV观看_中国猛少妇色xxxxx_caopor超碰_992tv人人大香草网址 国产婷婷色一区二区三区_国产免费看片_97毛片_成人性生爱a∨_麻豆免费在线观看视频_国产亚洲精品久久久久久牛牛 |