void Start() { //pathToFile = Resources.Load<TextAsset>("Asset/Orbital.csv"); string[] data = pathToFile.text.Split(new char[] { '\n' }); for (int i = 1; i < data.Length - 1; i++) { string[] values = data[i].Split(new char[] { ',' }); CSVfile file = new CSVfile(); float.TryParse(values[0], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out file.A); DateTime.TryParse(values[1], System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal, out file.B); float.TryParse(values[2], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out file.C); float.TryParse(values[3], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out file.D); float.TryParse(values[4], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out file.E); float.TryParse(values[5], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out file.F); float.TryParse(values[6], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out file.G); float.TryParse(values[7], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out file.H); float.TryParse(values[8], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out file.I); list.Add(file); } //double.TryParse(s, System.Globalization.NumberStyles.Float, //System.Globalization.CultureInfo.InvariantCulture, out f Debug.Log(list[16].B.ToLocalTime()); }
/// <summary> /// uloží soubor do formátu CSV /// </summary> /// <param name="jmenoSouboru">jméno nebo cesta souboru</param> /// <param name="zapisHlavicku">určuje, zda má dojít k zapsání hlavičky (jmen sloupců)</param> public void UlozCSV(string jmenoSouboru, bool zapisHlavicku = true) { if (jmenoSouboru != null) { //přidá příponu, pokud není v názvu obsažena string jmenoSouboruSPriponou = PridejPriponuPokudNeni(jmenoSouboru); //vytvoření toku dat pro zápis do souboru (vytvoří soubor a otevře ho pro zápis) //stejně jako u StreamReaderu i StreamWriter implementuje interface "IDisposable" //zde ale musíme volat metodu Dispose() ručně, protože chceme separovat soubory, tzn. že musíme nové soubory v průběhu kódu vytvářet, což by při použití příkazu "using" nebylo možné Stream stream = new FileStream(jmenoSouboruSPriponou, FileMode.Create); StreamWriter CSVfile = new System.IO.StreamWriter(stream, Encoding.Default); //pokud se má zapsat hlavička, a ta v objektu existuje, pokusí se do souboru tuto hlavičku zapsat if (zapisHlavicku && this.JeHlavickaNactena() && this.Hlavicka != null && this.Hlavicka.Count > 0) { try { foreach (String hlavicka in this.Hlavicka) { //zapíše jednotlivé hlavičky, a pokud se jedná o poslední prvek, tak za něj nepřidá separátor CSVfile.Write($"{hlavicka}"); if (hlavicka != this.Hlavicka[this.Hlavicka.Count - 1]) { CSVfile.Write($"{(char)this.Separator}"); } } CSVfile.WriteLine(String.Empty); } catch (Exception ex) { //pokud dojde k chybě, zavře se soubor a následně se ještě musí uvolnit prostředky CSVfile.Dispose(); stream.Dispose(); //zde vyhodíme vyjímku dále do vyšší úrovně programu, aby programátor používající knihovnu na ni mohl zareagovat vlastním způsobem throw ex; } } //zapíše data, pokud nějaké jsou if (this.Data != null && this.Data.Count > 0) { uint cislo = 2; //číslo pro uvedení názvu souboru, pro případné rozdělení CSV souboru for (int i = 0; i < this.Data.Count; i++) { if (this.Data[i] != null && this.Data[i].Count > 0) { try { for (int j = 0; j < this.Data[i].Count; j++) { //pokud je to nutné, změní oddělovač desetinných čísel v řetězci string zmenenaHodnota = this.ZmenDesetinnyOddelovacPokudJeNutne(this.Data[i][j]); //zapíše jednotlivé sloupce CSVfile.Write($"{zmenenaHodnota}"); //posledni prvek na konci řádku je bez separátoru (středníku/čárky), za ostatními hodnotami se separátor dává if (j != this.Data[i].Count - 1) { CSVfile.Write($"{(char)this.Separator}"); } } //odřádkujeme CSVfile.WriteLine(String.Empty); //pokud má být CSV soubor po určitém množství zapsaných dat rozdělen if (this.OddelSoubory == true) { //zjistí aktuální délku souboru pomocí třídy FileInfo FileInfo fileInfo = new FileInfo(jmenoSouboruSPriponou); if (fileInfo.Length > this.MaximalniVelikostSouboru) { //pokud byla překročena délka souboru, poskládá nové jméno souboru jmenoSouboruSPriponou = jmenoSouboruSPriponou.Substring(0, jmenoSouboruSPriponou.Length - CSV.extension.Length) + cislo.ToString() + CSV.extension; cislo += 1; //uzavře se původní soubor a odstraní se všechny přidělené prostředky CSVfile.Dispose(); stream.Dispose(); //vytvoří se nový tok dat pro zápis stream = new FileStream(jmenoSouboruSPriponou, FileMode.Create); CSVfile = new System.IO.StreamWriter(stream, Encoding.Default); } } } catch (Exception ex) { //pokud dojde k chybě, zavře se soubor a následně se ještě musí uvolnit prostředky CSVfile.Dispose(); stream.Dispose(); //zde vyhodíme vyjímku dále do vyšší úrovně programu, aby programátor používající knihovnu na ni mohl zareagovat vlastním způsobem throw ex; } } } } CSVfile.Dispose(); stream.Dispose(); } }