免费国产网站_秋霞午夜一区二区三区视频_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ù)文件路徑


    主站蜘蛛池模板: 亚洲精品亚洲人成人网裸体艺术_国产亚洲欧洲综合5388_波多野结衣一区二区三区高清_少妇人妻好深太紧了A片VR_91看片在线观看_中文字幕奶水喷出在线观看 | 91高清国产_中国少妇XXXX做受_欧美日韩综合精品码视频_国产成人久久久久_18成禁人视频免费_国产欧美日韩中文字幕在线 | ASS年轻少妇BBWPIC_青青操综合网_日本久操视频_国产+成+人+亚洲欧洲自线_日产精品久久久久久久性色_国产精品久久久久久久久久久丝袜 | 国产精品乱码色情一区_激情久久AV一区AV二区AV三区_樱桃视频首页在线观看_男女一对一免费视频_成人无码看片在线观看免费_国产麻豆一区二区三区 | 97久久精品无码一区二区_久久丫亚洲一区二区_99久久一区二区_日本中文字幕在线观看全_亚洲成色综合网站yy_爱爱爱视频免费看 | 99久久免费精品国产男女性高好_日本免费一二区_国模和精品嫩模私拍视频_99re热这里只有精品视频_国产色迷迷_亚洲一区二区三区色情爆乳 | 国产乱淫a∨片免费观看_精品一区二区三区免费播放_国产91美女视频_久久精品噜噜噜成人av农村_国产小屁孩cao大人_一级毛片在线看aaaa | 欧美精品1_国产酒店强推在线观看_日韩性生活大片_靠逼网站在线观看_亚洲国产精品一区_国产精品色欲AV亚洲三区 | 国产极品粉嫩在线观看的软件_国产女人乱子对白AV片_91视频久久久久_久久久青草_97一级毛片全部免费播放_日韩和的一区二区 亚洲成人免费在线播放_99久久精品久久久久久清纯_国产火热热av_国语FREE性XXXXXHD_麻豆av在线免费观看_欧美极品在线视频 | 国产视频久久久久_99在线免费_亚洲成人精品_无码精品第1页_成人va视频_国产精品偷伦费观看一次 | 午夜福利在线观看6080_国内精品三级_中文日产幕无线码一区_np群乱肉欧美精品大黄毛片_精品成人一区_中文字幕有码在线 | 国产一三区A片在线播放_91青青国产_国产三级一区二区三区_久久机视频_天天干天天爽天天射_天天狠狠操 | 99久久久免费精品国产一区二区_av看片在线_国产色无码精品视频免费_欧洲精品一卡2卡三卡4卡影视_精品久久中文字幕_最近中文字幕mv免费高清动漫 | 青草精品在线_欧美熟妇精品一区二区三区_色综合久久久_91精品欧美久久久久久_国产美女露脸口爆吞精_午夜少妇av | 亚洲精品无码不卡久久久久_jizzjizz日本护士高清喷水_亚洲国产长腿丝袜AV天堂_精品亚洲自拍_夜夜草影视_精品色区 | 人妻波多野结衣爽到喷水_日本午夜一区二区三区_又粗又硬又黄a级毛片_一本大道精品视频在线_黄在线观看_久久88 | 亚洲最新视频在线观看_中文人妻无码一区二区三区在线_91激情小视频_神马久久桃花_三级超碰_色www免费视频 | 欧美精品3_国产视频不卡_亚洲春色αV无码专区在线播放_欧美久久久久久久久久_色在线亚洲视频www_日韩精品一区二区亚洲A∨观看 | 日日碰狠狠添天天爽超碰97_人人妻人人做人人爽精品_久久亚洲精选_欧美a一区_妇欲欢公爽公妇精品_av资源在线观看免费高清 | 亚洲va欧美va国产综合剧情_午夜在线免费观看_亚洲自拍图_热久久久久久久久久_欧美熟妇XXXXX欧美老妇不卡_国产精品28P | av资源首页_国产欧美网站_中文日产幕无线码一区不卡_日日躁天天躁躁aV麻豆_日本a级片免费在线观看_亚洲精品中文字幕不卡 | 亚洲综合在线观看视频_国内嫩模私拍精品视频_老鸭窝毛片一区二区三区_久草黄色_小视频免费在线观看_日韩在线观看视频网站 | 再深点灬舒服灬太大的91优势_欧美aⅴ片_久热在线这里只有精品_日韩精选在线_av毛片免费在线观看_综合色一色综合久久网 | 久草青青_亚洲精品68久久久一区_国产亚洲精aa成人网站_色香色欲天天综合网天天来吧_亚洲第一图区_亚洲一级片 | 免费无码又爽又黄又刺激网站_国产另类综合欧美在线_看nba免费软件_国产一区二区三区精品欧美日韩一区二区三区_国产丰满老熟妇乱xxx1区_91av在 | 亚洲国产中文无线乱码在线观看_少妇与大狼拘作爱性a_国产又黄又刺激又色视频在线_色婷婷久久一区二区三区麻豆_国产精品久久久久久久日韩_国产欧美一区在线观看 | 少妇做爰高潮呻吟A片免费_亚洲精品久久久久久首妖_国产日产精品一区二区三区四区功能_小明看看免费平台永久_国产精品毛片久久_色久综合网 | 黄色一级免费_91麻豆成人精品国产免费网站_久青草网站_国产乱码精品一区二区三区手机版_日韩精品一二三_91华人在线观看 | 啊别插了视频高清在线观看_日韩GAY小鲜肉啪啪18禁_99国精产品一区二区三区a片_jzzijzzij亚洲乱熟无码_中文字幕日本视频_人和禽的性视频77777 | 久草视频在线看_国产精品99久久久久_国产剧情亚洲_四虎在线观看网址_国产字幕在线观看_中国一级大黄大黄大色毛片 | 日本成人精品视频_91在线中文字幕_竹菊影视欧美日韩一区二区三区四区五区_日本人妻中文字幕乱码系列_黄色自拍视频_欧美成人一二区 | 国产高潮白浆喷水_久久精品99av高久久精品_av网站网址在线观看_91麻豆久久久_18禁人看免费无遮挡网站不卡_午夜成人性刺激免费视频 | 99亚洲国产精品_丰满熟女大屁股水多多_亚洲国语_日本五十路一区二区三区在线观看_婷婷日日夜夜_久久国产精品免费看 | 午夜少妇福利_亚洲av无码成人精品国产_国产亚洲精品久久久久四川人_老司机福利片_在线看一级毛片免费视频播放_国产亚洲精品成人av久久果冻 | 免费一级做a爰片久久毛片无遮挡_一级作爱片_哦┅┅快┅┅用力啊┅┅在线观看_亚洲精品大全_中文字幕无码乱人伦在线_国产成人精品成人a在线观看 | 国产浪潮AV性色四虎_亚洲国产精品久久不卡毛片_含羞草天堂久久爱_延禧宫略在线观看_少妇bbbb做爰_中日韩黄色录像 | 国产精品二_精品久久一区二区_免费无码不卡视频在线观看_日韩视频一区二区_欧美黄视频_奇米欧美 | 99热这里只有精品在线播放_一级黄色a_欧美精品三区四区_污片在线观看免费_欧美激情第八页_精品国产一级片 | 国产最新地址_亚洲AV无码一区二区三区网站_久久久av大桥未久一区二区_久久国产精品99国产_挺进长腿秘书的臀缝耸动小说_亚洲精品中文字幕视频 | 天堂在线最新版www中文_av操操操_久久综合久久美利坚合众国_99国产欧美久久久精品蜜芽_国产人妻无码精品_亚洲私人影院 | 国产精品国产精品九九_男生操女生视频在线观看_粉嫩一区二区三区在线看_国产无遮挡又黄又爽不要VIP网站_台湾一区二区三区_四虎影院免费看 |