Example #1
0
    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());
    }
Example #2
0
        /// <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();
            }
        }