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ù)文件路徑


    主站蜘蛛池模板: 久久亚州综合_97碰在线看片免费视频_亚洲精品一区国产精品_制服丝袜中文字幕无码自拍_无码日韩人妻AV一区免费_97日韩在线_国产福利免费看_狠狠躁狠狠爱免费视频欧美 | 欧美日韩精品视频一区二区在_欧美一级片网站_大地资源影院在线播放_亚洲bbw性色大片_小伙和少妇干柴烈火_少妇厨房愉情理伦片BD在线观看_精品一区二区三区日韩_91日日日 | gogo大胆无码免费视频列表_亚洲精品秘在线看_国产成人综合在线女婷五月99播放_日韩一区二区三区四区区区_成年人黄页_国产福利毛片_欧美日韩一区二区三区不卡_日韩无在线 | 久久精品视频网站_免费成人黄色网_超碰在线人人艹_av综合久久_亚州精品av久久久久久久影院_91亚·色_国产免费一级一级_成人av色 | 女人被躁到高潮免费视频_一区二区视频免费看_色噜噜狠狠色综合成人网_欧美成a人片在线观看久_国产日韩精品中文字无码_一级特级片_国产精品av久久久久久久久久_天堂8中文在线最新版在线 | 亚洲精品wwww_中文字幕一区二区三区四区久久_91麻豆国产_免费追剧网址_国产精品pans私拍_国产成人a亚洲精品_老司机亚洲精品_久久999精品久久久 | 欧美人妻一区二区三区_九九在线精品国产_国产精品无码MV在线观看_一级免费观看_天堂中文av_日本护士野外奶水HD_国产精品人成_91久久人澡人人添人人爽欧美 | 国产亚洲精品精品精品_99国产视频_国产综合色一区二区三区_ipx亚洲一区二区三区_99精品免费观看_成人亚洲在线_午夜视频日本_白丝无内液液酱夹腿自慰 | 日本成人a网站_精品国产福利久久久_91久久精品一区二区三区大_性少妇videosexfre_亚洲一级色片_无码国产精品一区二区免费式芒果_久久精品美女_136fldh福利视频导在线 | 写真福利视频_香蕉尹人综合在线观看_欧美中文字幕第一页_亚洲国产精品无码一线岛国_一本到无码av专区无码不卡_国产精品一区二区在线观看99_欧美激情A片久久久久久_青青操在线播放 | 亚洲乱码中文字幕综合区_亚洲国产另类久久久精品网站_久久久国产精华液999999_深夜视频国产_亚洲精品毛片av_九九在线免费视频_狠狠干综合网_久草免费看 | 人人人妻人人澡人人爽欧美一区_四色激情网_麻豆神马91_精品欧美一区二区中文字幕视频_激情信箱免费观看_日本黄色不卡_aaaa国产_狠狠做五月深爱婷婷伊人 | 亚洲国产成人高清在线播放_asian成熟肉图pics_老司机精品视频免费观看_又大又粗又爽免费视频a片_中文在线观看免费网站_最新日韩精品视频_亚洲欧洲日产国码无码久久99_一区二三区四区乱 | 精品国产日韩专区欧美第一页_亚洲丰满少妇xxxxx高潮对白_国产xxxx搡xxxxx搡麻豆_另类视频一区二区三区_伦理片一区二区三区_国产中文区4幕区2023_精品福利视频一区二区三区_美国十次狠狠色综合AV | 99aiav日韩黄色在线_日本一区二区三区免费播放_匈牙利xxxx性hd极品_一级aa毛片_91大神唐先生22部在线观看_韩国三级毛片_久久黑人_国产xxxxx精品av青椒 | 天堂中文官网在线_欧美4区_国产欧美一区二区三区视频_成人综合网久久久久久_韩国专区福利一区二区_中国农村熟妇性视频_国产精品毛片无遮挡_波多野结衣AV一区二区无码 | 午夜精品福利视频_国产日韩欧美东南在线_日韩美国1级大片_99视频国产热精品_久草热精品_18无码粉嫩小泬无套在线观看_强壮的公次次弄得我高潮a片日本_亚洲伦理片在线观看 | 亚洲一区二区三区视频在线_亚洲久本草在线中文字幕_国产综合色在线播放_日本xxxⅹ18一20岁_高潮绝顶抽搐大叫久久精品_中国精品少妇hd_久久久久久午夜_欧美激情片一区二区 | 成人性做爰aaa片免费看_日本激情视频中文字幕_变形金刚之超能勇士免费观看_国产精品亚洲а∨无码播放不卡_91红桃视频_良家小少妇潮喷内射_久久99精品久久久久久园产越南_国产又色又爽又刺激视频 | 国产成人精品视频在线_av网站亚洲_成人一区二_国产精品自产拍在线观看_亚洲av日韩av激情亚洲_91在线免费公开视频_国产精品二区在线观看_看黄A大片爽爽影院免费无码 | caoporm-超频在线视频_欧美欧美欧美欧美首页_国产精品18久久久久久首页狼_91丨porny丨_高潮av在线_一级空姐毛片_女教师の爆乳bd在线观看_丁香婷婷综合激情五月色 | 色网站在线视频_国产九色网站_成人免费视频国产_禁果av一区在线在观看_欧美暴力analvideos_在线观看中文字幕dvd播放_日韩精品资源二区在线_无码H肉3D动漫在线观看 | 国产网站久久_超碰99热_国产痴女资源在线不卡_欧美偷拍另类_av不卡免费_艹逼视频免费观看_国产精品一区二区三区成人_亚洲成年人在线 | 日本大片一级_欧美3p两根一起进高清视频_亚洲人成无码网站18禁_欧美人与猪马狗在线观看_亚洲国产精品国自产拍久久_91华人在线_a级欧美视频_国模av在线 | 97国产高清dvd_国产乱仑视频_韩日免费_久久高清内射无套_国产欧美精品一区二区三区-老狼_成人精品毛片_亚洲色欲色欱WWW在线_亚洲性毛片 | 天天看国91产在线精品福利桃色_午夜国产精品成人_麻豆手机在线观看_又粗又硬又黄又爽的免费视频_久久国产乱子精品免费女_a性视频_蜜桃AV噜噜一区二区三区_国产色视频免费 | 69久久夜色精品国产7777_亚洲国产成人无码AV在线播放_伊人中文_白丝jk小仙女自慰喷白浆_免费的国产网站_一区二区伦理_国产91九色_午夜毛片免费看20次 | 福利社区一区二区_国产日韩精品一区二区在线观看播放_717影院理论午夜伦八戒_在线观看视频中文字幕_高清国产AV一区二区三区_视频二区精品中文字幕_久久夜夜躁天天躁背后的原因_99热国产在线中文 | 久久福利一区二区_91av网址_久草午夜_色综合伊人丁香五月桃花婷婷_日本人丰满XXXXHD_一本色道久久亚洲综合精品蜜桃_成人国产三级_欧美黑人牲交videossexeso | 青天衙门第一部免费版_粉色视频成人免费观看_国产白嫩漂亮美女在线观看_亚州精品天堂中文字幕_中文字幕av三区_欧美日韩一级黄_一级做a爰片欧美激情床_国产精品二区视频 | 国产亚洲精品美女久久久_美女高潮一区二区三区_亚洲成无码人在线观看_久久夜色精品国产网站_777cc成人_天天操综合视频_久久久久久久久888_男人的天堂AV亚洲一区2区 | 国产色视频网站2_久一在线视频_欧美四区_国产欧美久久精品_偷偷要色偷偷中文无码_欧美国产日韩一区在线观看_成人影院亚洲_午夜精选视频 | 成人精品一区二区三区_闷骚的老熟女人15P_影音先锋色情资源站_夫妻午夜视频_久久精品无码专区免费青青_亚洲丝袜制服美女av_久久午夜影视_酒色影院 | 亚洲人成人影院在线观看_欧美国产一区二区在线_成熟女人色惰片免费视频_夜色成人网_高清日本视频_日本免费一区二区三区四区五六区_欧美性69式XXXX护士_涩涩成人 | 亚洲伦理_无码动漫性爽xo视频在线_大地资源在线视频资源_久欠精品国国产99国产精2021_日本www色_国产亚洲福利精品一区_久久热这里只有精品在线观看_晚上偷偷与邻居做爰了小说 | 在线观看国产一区二区三区_99久久久99久久国产片鸭王_欧美日韩激情网_91精品国产色综合久久_国产精品网在线观看_丰满少妇被猛烈进入流水_色偷偷AV男人的天堂京东热_中文在线a | 欧美一级高清免费_av毛片在线免费观看_一区不卡在线观看_亚洲日韩制服丝袜中文字幕_A级毛片100部免费看_成人羞羞国产免费网站_日本xxxx视频_国产一级视频在线播放 | 日本亚洲a_丰满人妻久久中文字幕免费_国产午夜大片_一级黄色日本_国产精品美女久久久m_亚洲视频网站在线观看_男女多P混交群体交乱A片_四虎最新影院 | 嗯嗯嗯亚洲精品国产精品一区_欧美日韩精选_又黄又粗暴的120秒免费GIF视频_年轻的朋友3中文_国产一女三男3p免费视频_亚洲人亚洲人色久_免费在线成人_日韩高清三区 | 亚洲精品视频一区_中国少妇xx_亚洲精品男女_国产精品一区二区久久精品爱微奶_欢乐好声音1国语版免费观看_国产在线视频网_国产又色又爽又黄的A片_成人免费av片在线观看 | 国产黄色a级毛片_嫩草com_免费高清三级中文_日本一区视频在线观看_牛和人交videos欧美_99久久视频_欧美最大胆的西西人体44_91av视频网 |