99国产欧美另娄久久久精品_国内自拍农村少妇在线观看_久久亚洲道色宗和久久_日本aⅴ大伊香蕉精品视频_亚洲国产欧美日韩欧美特级_日本视频免费在线观看

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

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

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

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

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

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

    直接看代碼:

    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)前字符,直接進(jìn)行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ù)文件路徑


    主站蜘蛛池模板: 国产香蕉一区二区三区_久久中文高清_中文字幕精品在线播放_在线免费看黄视频_国产午夜成人AV在线播放_成人福利在线观看视频_高清亚洲_免费超碰 | 一级看片免费视频囗交_亚洲日韩在线中文字幕线路2区_国产一级片免费_久久精品a一级国产免视看成人_成人超碰在线观看_亚洲香蕉视频综合在线_久久毛片免费观看_2019年中文字字幕在线看不卡 | 久久国产原创_一级免费毛片_日本人在线观看_欧美疯狂xxxxbbbb动态图_精品久久久久久久久久软件_亚洲成av人片在线观看高清_丁香婷婷六月综合网_无码专区国产精品一区 | 中文字幕一区二区三区免费视频_欧美性影院_国产理论一区二区三区_婷婷色综合久久_久久精品2_免费精品99久久国产综合精品_老司机免费_无码人妻精品一区二区三 | www.俺去_午夜免费1000_jiujiure精品视频播放_国产第一精品_久久综合香蕉国产蜜臀av_国产精品视频区1_无码少妇高潮喷水A片免费_久久国产劲暴∨内射新川 | 无遮挡啪啪摇乳动态图GIF_国产一区福利_欧美性三级_91情侣在线精品国产_伊人75_欧美在线网站_www.久久网_欧美黄色一级 | 加勒比无码专区中文字幕_免费人成网ww44kk44_欧美日韩高清一区_高清视频在线观看免费播放_欧美高清一区三区在线专区_亚洲AV无码专区在线亚_日本一区二区三区免费高清_免费精品国产人妻国语三上悠亚 | 国产一区二区三区美女_一个人看的www免费观看视频_在线成人看片_国产伦精品一区二区三区88av_亚洲精品无码AV中文字幕_精品久久久久久综合日本_九色成人在线_穿书自救指南2樱花动漫免费观看 | 少妇激情一区二区三区视频_大地资源网中文在线观看免费节目_日韩精品人妻中文字幕有码_超碰97人人射_a级免费观看视频_国产第一页福利影院_成人免费无码大片a_成人国产一区二区精品小说 | 精品二区在线_欧美日韩亚洲中文字幕一区二区三区_欧美精品_伊人逼逼_欧美熟乱妇_最近的2019中文字幕免费_亚洲中文字幕av无码区_www.av日韩 | 国产又粗又猛又黄又爽无遮挡_日本一二区在线观看_日韩wuma_特黄A又粗又大又黄又爽A片_97色视频在线_日本人成网站18禁止久久影院_少妇极品熟妇人妻无码_午夜精品美女自拍福到在线 | 亚洲精品久久激情国产片_中国大陆黄色片_日韩久久无码免费看A_久久99视频免费_少妇精品久久久一区二区三区_欧美一级性爱免费观看_91免费观看在线_久操新在线 | 欧美黄色特级视频_日本高清一本视频_成人免费sss片_chinese丰满人妻videos_欧洲成人一区_高清一级淫片a级中文字幕_亚洲专区一_久久久91av | 成人在线观看不卡_国产人成视频在线视频_91亚洲精品久久久中文字幕_九九九九九九精品_超碰人人插_麻豆文化传媒在国产之光_国产精品久久综合_成年人网站国产 | 日本一区二区三区免费A片_成年人在线视频观看_精品国模一区二区三区浪潮_四虎永久在线精品免费播放_不卡欧美_在线国产精品视频_欧美一区二区性_中文字幕有码无码AV | 国产午夜亚洲精品_毛片久久久久_七级毛片_91在线麻豆_japanese佳佳丝袜足调教_精品一区二区三区av_男人的天堂久久久_欧美40老熟妇色xxxxx | 国产精品超碰_国产精品久久久久久久成人午夜_综合久久2o19_上司部长出轨漂亮人妻_成人九色_互换后人妻的呻吟晓红_国产精品欧美_亚洲mv大片欧洲mv大片 | 久久久久久久久亚洲精品_国产一女三男实拍视频_别揉我奶头~嗯~啊~视频免费网站_欧美日韩高清_аⅴ资源天堂资源库_澳门四虎_国产精品鲁鲁鲁_亚洲三级高清日本 | chinese性内射高清5_亚洲人成精品久久久久_欧美日韩在线亚洲一区蜜芽_亚洲XXXX做受欧美_无码精品AV久久久奶水小说_国产成人女人毛片视频在线_女高中生第一次破苞av_www.欧美日韩 | 欧美成人伊人久久综合网_看国产到性色_在线免费亚洲_久草ab_18禁真人抽搐一进一出免费_91中文日产幕无线码系列_色视频一区_久久精品一区二区三区视频 | 色欲aⅴ亚洲情无码AV_欧美喷潮久久久XXXXX_国产精品高潮呻吟久久av黑人_亚洲AV无码专区亚洲AV网站_姑娘第7集在线观看_国产成人精选视频在线观看_91视频在线视频_亚洲伦理一区 | 中文字幕a∨在线乱码免费看_国产又粗又猛又爽又黄的视频软件_天天影视网网色色欲_成人做爰69片免费_日本精品成人一区二区三区视频_小小影视网在线观看_色综合久久精品_日韩欧美福利 | 超碰网在线观看_日本xxxx裸体bbbb_国产中文在线播放_国产男女做爰高清全过小说_色视频在线观看免费_久草片免费福利_成人在线免费视频_www.免费av | 超碰偷拍_AV无码久久久久不卡网站蜜桃_午夜私人视频_99re视频在线免费观看_国产午夜男女在线_97影院最新理论片_爱爱视频免费看_久久国产免费福利永久 | 国产黄频_电家庭影院午夜_久久精品在线_成人亚洲欧美一区二区三区_一区二区在线国产_超碰97免费观看_五月婷激情_欧美激情五月 | 国产区一区二区三_24小时免费看片_精品在线视频一区二区三区_精品久久国产精品_一个人看视频高清www俩个_久久精品1区_熟女泄火一区二区三区在线_日色视频 | 久草新在线_亚洲婷婷六月的婷婷_欧美成人看片一区二区三区尤物_国产特黄在线_久久亚洲精中文字幕西条琉璃_久草热在线_国内91视频_欧美日本久久久 | 成人手机在线视频_gay男同帅哥网站在线观看_欧美人与拘牲交大全视频_日韩高清不卡一区二区_一区二区三区四区免费在线观看_tube69最新_亚洲欧洲日产韩国在线看片_91嫩草国产在线观看 | 天天看国91产在线精品福利桃色_午夜国产精品成人_麻豆手机在线观看_又粗又硬又黄又爽的免费视频_久久国产乱子精品免费女_a性视频_蜜桃AV噜噜一区二区三区_国产色视频免费 | 999国产一区二区三区四区_国产精品theporn_A毛片终身免费观看网站_日本大片在线免费观看_毛片毛片毛片毛片毛片_黑人床戏_亚洲Av日韩Aⅴ高潮潮喷无码_九色蝌蚪少妇 | 在线天堂资源www中文_特级无码A级毛片特黄_中文字幕2018第一页_影音先锋成人影院_天天番号网_亚洲经典视频_日本狠狠色_国产乱码久久久久久 | 嘿嘿视频在线观看_日本福利小视频_日韩欧美在线综合_色偷偷偷亚洲综合网另类_亚洲精品禁_国产呦小j女精品视频_欧美不卡视频_狠狠色成人综合网 | 日韩精品无码一区二区三区四区_九色永久网址_亚洲成色WWW成人网站妖精_女教师《枫可怜》av_老司机午夜免费_国产91一区二区三区_国产香蕉视频在线_久久97视频 | 免费看v片_亚洲女同一区二区_91在线观看高清视频_在线成人免费_亚洲首页一区任你躁XXXXX_国产一起色一起爱_18禁美女黄网站色大片免费看_av不卡免费在线 | 国产精品3_九一视频国产_国产免费极品av吧在线观看_999久久免费精品国产_国产亚洲综合网曝门系列_青青草最新视频_久久久久久久久久久妇女_亚洲最大中文字幕无码网站 | 99午夜_全黄a免费一级毛片人人爱_亚洲一区二区av在线_久久99久久久_国产亚洲日韩欧美另类第八页_麻豆av网站_色综合网址_超碰免费看 | 亚洲综合第一页_亚洲视频三_222aaa免费无码_免费av网站在线观看_亚洲av日韩av永久无码不卡_毛片24种姿势无遮无拦_男人和女人做爽爽视频免费_求个毛片网站 自拍亚洲伦理_天天操综合_91网站在线观看视频_在线观看免费www_777久久精品一区二区三区无码_黑人玩弄人妻中文在线_黄色一级视频_久热精品在线播放 | 欧美a级成人网站免费_精品国产天堂_国产色婷婷五月精品综合在线_成人三级网址_婷婷久久无码欧美人妻_一级毛片在线观看视频_小12萝8禁在线喷水观看_精品一区二区在线观看视频 | 亚洲av永久无码精品国产精品_欧美性猛交XXXX黑人猛交_中文字幕涩涩久久乱小说_欧美成人精品一区二区_国产视频精品自拍_欧美日一区二区_免费av在线_久久久久青草线蕉亚洲 | 欧美综合影院_国产伦精品一区二区三区妓女_午夜少妇影院_免费一级毛片_毛片全网站_欧美丰满熟妇性xxxx_亚洲人成小说网站色_国产一国产aa毛片 | 成年女人午夜毛片免费视频_日韩在线观看视频一区二区三区_一级免费播放_日本草逼视频_亚洲欧美日韩国产成人一区_麻豆最新网址_国产精品久久久久久久白丝_免费人成自慰网站 |