| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using UnityEngine.UI;
- namespace Game.Config
- {
- public class CsvReader
- {
- private List<string[]> rowDatas;
- private string path;
- private Encoding encoding;
- private bool isgb2312;
- public string Name;
- public CsvReader(string csvpath, Encoding edg = null)
- {
- if (string.IsNullOrEmpty(csvpath))
- {
- throw new ArgumentNullException("path");
- }
- rowDatas = new List<string[]>();
- encoding = edg;
- path = csvpath;
- if (edg == null)
- {
- encoding = Encoding.UTF8;
- isgb2312 = false;
- }
- else if (edg != Encoding.UTF8)
- {
- isgb2312 = true;
- }
- Name =FileHelper.GetName(path);
- ReadFromCsv();
- }
- public CsvReader(string name,byte[] bytes)
- {
- rowDatas = new List<string[]>();
- isgb2312 = false;
- Name = name;
- ReadFromMemory(bytes);
- }
- public string[][] RowDatas
- {
- get
- {
- return rowDatas.ToArray();
- }
- }
- public string[] Fields()
- {
- return rowDatas[0];
- }
- public string[] Types()
- {
- return rowDatas[1];
- }
- private void ReadFromCsv()//改异步
- {
- string[] datas = File.ReadAllLines(path, encoding);
- if (datas == null || datas.Length <= 0)
- {
- return;
- }
- if (isgb2312)
- {
- for (int i = 0; i < datas.Length; i++)
- {
- datas[i] = FileHelper.GB2312ToUTF8(datas[i]);
- }
- }
- foreach (var item in datas)
- {
- string[] rdt = FileHelper.SpiltData(item);
- rowDatas.Add(rdt);
- }
- }
- private void ReadFromMemory(byte[] bytes)
- {
- string str = Encoding.UTF8.GetString(bytes);
- string[] datas = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
- foreach (var item in datas)
- {
- string[] rdt = FileHelper.SpiltData(item);
- rowDatas.Add(rdt);
- }
- }
-
- }
- }
|