示例#1
0
        /// <summary>
        /// Write database records to text based file format.
        /// </summary>
        /// <param name="path">The fields file path.</param>
        /// <param name="fs">The file system.</param>
        /// <param name="database">The source records database.</param>
        void ITextFieldWriter <XDatabase> .Write(string path, IFileSystem fs, XDatabase database)
        {
            using (var writer = new System.IO.StringWriter())
            {
                var configuration = new CSV.Configuration.CsvConfiguration();
                configuration.Delimiter   = CultureInfo.CurrentCulture.TextInfo.ListSeparator;
                configuration.CultureInfo = CultureInfo.CurrentCulture;

                using (var csv = new CSV.CsvWriter(writer, configuration))
                {
                    // columns
                    csv.WriteField(database.IdColumnName);
                    foreach (var column in database.Columns)
                    {
                        csv.WriteField(column.Name);
                    }
                    csv.NextRecord();

                    // records
                    foreach (var record in database.Records)
                    {
                        csv.WriteField(record.Id.ToString());
                        foreach (var value in record.Values)
                        {
                            csv.WriteField(value.Content);
                        }
                        csv.NextRecord();
                    }
                }

                fs.WriteUtf8Text(path, writer.ToString());
            }
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bindings"></param>
        private static void OutputToFile(List <Binding> bindings)
        {
            using (FileStream fileStream = new FileStream(Path.Combine(fclp.Object.Output, "wmi-parser.tsv"), FileMode.Create, FileAccess.Write))
                using (StreamWriter streamWriter = new StreamWriter(fileStream))
                    using (CsvWriter cw = new CsvHelper.CsvWriter(streamWriter))
                    {
                        cw.Configuration.Delimiter = "\t";
                        // Write out the file headers
                        cw.WriteField("Name");
                        cw.WriteField("Type");
                        cw.WriteField("Arguments");
                        cw.WriteField("Filter Name");
                        cw.WriteField("Filter Query");
                        cw.NextRecord();

                        foreach (var b in bindings)
                        {
                            cw.WriteField(b.Name);
                            cw.WriteField(b.Type);
                            cw.WriteField(b.Arguments);
                            cw.WriteField(b.Filter);
                            cw.WriteField(b.Query);
                            cw.NextRecord();;
                        }
                    }
        }
示例#3
0
        public static string CreateCSV(IEnumerable <StringTableEntry> entries)
        {
            using (var textWriter = new System.IO.StringWriter())
            {
                // Generate the localised .csv file

                // Use the invariant culture when writing the CSV
                var csv = new CsvHelper.CsvWriter(
                    textWriter,        // write into this stream
                    GetConfiguration() // use this configuration
                    );

                var fieldNames = new[] {
                    "language",
                    "id",
                    "text",
                    "file",
                    "node",
                    "lineNumber",
                    "lock",
                    "comment",
                };

                foreach (var field in fieldNames)
                {
                    csv.WriteField(field);
                }
                csv.NextRecord();

                foreach (var entry in entries)
                {
                    var values = new[] {
                        entry.Language,
                        entry.ID,
                        entry.Text,
                        entry.File,
                        entry.Node,
                        entry.LineNumber,
                        entry.Lock,
                        entry.Comment,
                    };
                    foreach (var value in values)
                    {
                        csv.WriteField(value);
                    }
                    csv.NextRecord();
                }

                return(textWriter.ToString());
            }
        }
        protected override void DoPostWorkCompleted()
        {
            // write the item feed status into the CSV file
            var resultFilePath = string.Format("{0}\\eBayProductsEndItemResults{1}.csv", _resultFileDirecctory, _systemJob.Id);

            // write into the file
            using (var streamWriter = new StreamWriter(resultFilePath))
            {
                var writer = new CsvHelper.CsvWriter(streamWriter);

                // write the column headers
                writer.WriteField("EisSKU");
                writer.WriteField("ItemId");
                writer.WriteField("Status");
                writer.WriteField("Message");
                writer.NextRecord();

                foreach (var item in _itemFeeds)
                {
                    writer.WriteField(item.EisSKU);
                    writer.WriteField(item.ItemId);
                    writer.WriteField(item.Status);
                    writer.WriteField(item.Message);

                    // move to the next row
                    writer.NextRecord();
                }
            }

            // update the system job parameters out for the file path of the result file
            _jobRepository.UpdateSystemJobParametersOut(_systemJob.Id, resultFilePath);
        }
        public static void WriteObjectToCsv(Metrics metrics, Type classtype, string filename)
        {
            using (var sw = new StreamWriter(filename))
            {
                var csvHelper = new CsvHelper.CsvWriter(sw);
                csvHelper.WriteHeader(classtype);
                csvHelper.NextRecord();

                csvHelper.WriteField(metrics.Distance);
                csvHelper.WriteField(metrics.Number);
                sw.Flush();
                csvHelper.Flush();
            }
        }
示例#6
0
        public string GetAsCSV()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            var        m      = new StringWriter(sb);
            TextWriter tw     = m;
            var        config = new CsvConfiguration(CultureInfo.CurrentCulture);

            config.Delimiter = ColumnDelimiter;


            var p = new CsvHelper.CsvWriter(tw, config);

            //CSVLine Line;
            foreach (var line in Lines)
            {
                foreach (var c in line.Columns)
                {
                    p.WriteField(c);
                }
                p.NextRecord();
            }
            p.Flush();

            return(sb.ToString());
        }
 /// <summary>
 /// Writes a csv header from a datatable
 /// </summary>
 /// <param name="queue"></param>
 /// <param name="csvWriter"></param>
 public static void WriteCSVHeader(DataTable queue, CsvHelper.CsvWriter csvWriter)
 {
     foreach (DataColumn column in queue.Columns)
     {
         csvWriter.WriteField(column.ColumnName);
     }
     csvWriter.NextRecord();
 }
示例#8
0
    public void Write(Stream stream, DatabaseViewModel?database)
    {
        if (database is null)
        {
            return;
        }

        using var writer = new StringWriter();

        var configuration = new CSV.Configuration.CsvConfiguration(CultureInfo.CurrentCulture)
        {
            Delimiter = CultureInfo.CurrentCulture.TextInfo.ListSeparator
        };

        using (var csvWriter = new CSV.CsvWriter(writer, configuration))
        {
            // Columns

            csvWriter.WriteField(database.IdColumnName);
            foreach (var column in database.Columns)
            {
                csvWriter.WriteField(column.Name);
            }
            csvWriter.NextRecord();

            // Records

            foreach (var record in database.Records)
            {
                csvWriter.WriteField(record.Id);
                foreach (var value in record.Values)
                {
                    csvWriter.WriteField(value.Content);
                }
                csvWriter.NextRecord();
            }
        }

        var csv = writer.ToString();

        var fileSystem = _serviceProvider.GetService <IFileSystem>();

        fileSystem?.WriteUtf8Text(stream, csv);
    }
示例#9
0
        /// <summary>
        /// Creates CSV-file to given path using Exportmodel as configurations and measurementModels as data.
        /// </summary>
        /// <param name="fullPath"></param>
        /// <param name="options"></param>
        /// <param name="measurements"></param>
        public void CreateCsvFile(string filename, string directoryPath, ExportModel options, List <MeasurementModel> measurements)
        {
            _measurements = measurements;
            try
            {
                if (!Directory.Exists(directoryPath))
                {
                    Directory.CreateDirectory(directoryPath);
                }

                using (TextWriter tw = new StreamWriter(directoryPath + filename))
                {
                    using (var writer = new CsvHelper.CsvWriter(tw))
                    {
                        if (!string.IsNullOrEmpty(options.ColumnDelimeter))
                        {
                            writer.Configuration.Delimiter = options.ColumnDelimeter;
                        }
                        writer.Configuration.HasHeaderRecord = options.ShowHeaders;
                        var selected = CreateSelectedValueList(options);
                        if (options.ShowHeaders)
                        {
                            var headers = CreateHeaders(measurements, selected);
                            foreach (var h in headers)
                            {
                                writer.WriteField(h);
                            }
                            writer.NextRecord();
                        }
                        var functions = CreateDataValueFunctions(selected);

                        for (mIndex = 0; mIndex < measurements.Count; mIndex++)
                        {
                            writer.WriteField(measurements[mIndex].Object);
                            writer.WriteField(measurements[mIndex].Tag);
                            writer.WriteField(measurements[mIndex].Timestamp.ToString(options.Datetimeformat));
                            writer.WriteField(measurements[mIndex] != null ? measurements[mIndex].Location?.ToString() : "");
                            writer.WriteField(measurements[mIndex].Note);

                            for (dIndex = 0; dIndex < measurements[mIndex].Data.Count; dIndex++)
                            {
                                foreach (var f in functions)
                                {
                                    var result = f.Invoke();
                                    writer.WriteField((object)result ?? (object)string.Empty);
                                }
                            }
                            writer.NextRecord();
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#10
0
        bool ExportPrices(Message message)
        {
            try
            {
                string fileName = $"C:\\temp\\price_{DateTime.Now.ToString("ddMMyyyyhh")}.csv";

                using (var sw = new StreamWriter(fileName, File.Exists(fileName)))
                {
                    var writer = new CsvHelper.CsvWriter(sw, _csvConfig);
                    var result = JsonConvert.DeserializeObject <PDLPRCP>(Encoding.UTF8.GetString(message.Body));
                    writer.WriteField(result.StyleNumber);
                    writer.WriteField(result.ColourCode);
                    writer.WriteField(result.SizeCode);
                    writer.WriteField(result.CountryCode);
                    writer.WriteField(result.BaseCcyCurrentRet);
                    writer.WriteField(result.BaseCcyOriginalRet);
                    writer.NextRecord();
                }

                //if (!File.Exists(fileName))
                //{
                //    using (var sw = new StreamWriter(fileName))
                //    {
                //        var writer = new CsvHelper.CsvWriter(sw, _csvConfig);
                //        var result = JsonConvert.DeserializeObject<PDLPRCP>(Encoding.UTF8.GetString(message.Body));
                //        writer.WriteField(result.StyleNumber);
                //        writer.WriteField(result.ColourCode);
                //        writer.WriteField(result.SizeCode);
                //        writer.WriteField(result.CountryCode);
                //        writer.WriteField(result.BaseCcyCurrentRet);
                //        writer.WriteField(result.BaseCcyOriginalRet);
                //        writer.NextRecord();
                //    }
                //}
                //else
                //{
                //    using (var sw = new StreamWriter(fileName,true))
                //    {
                //        var writer = new CsvHelper.CsvWriter(sw, _csvConfig);
                //        writer.NextRecord();
                //        var result = JsonConvert.DeserializeObject<PDLPRCP>(Encoding.UTF8.GetString(message.Body));
                //        writer.WriteField(result.StyleNumber);
                //        writer.WriteField(result.ColourCode);
                //        writer.WriteField(result.SizeCode);
                //        writer.WriteField(result.CountryCode);
                //        writer.WriteField(result.BaseCcyCurrentRet);
                //        writer.WriteField(result.BaseCcyOriginalRet);
                //        writer.NextRecord();
                //    }
                //}


                return(true);
            }
            catch (Exception ex)
            {
                log.Error("Export prices: ", ex);
            }
            return(false);
        }
示例#11
0
        static void SkapaIntCSV(List <OmniArtikel> artiklar, string path)
        {
            using (var stream = File.OpenWrite(path))
                using (var writer = new StreamWriter(stream, Encoding.UTF8))
                    using (var csvWriter = new CsvHelper.CsvWriter(writer))
                    {
                        csvWriter.Configuration.Delimiter       = ",";
                        csvWriter.Configuration.HasHeaderRecord = false;

                        // Headers
                        csvWriter.WriteField("x");
                        csvWriter.WriteField("y");
                        csvWriter.NextRecord();

                        foreach (var artikel in artiklar)
                        {
                            csvWriter.WriteField(TextTillIndexArray(artikel.Text.Trim()));
                            csvWriter.WriteField(KategorierTillIndexArray(artikel.Taggar.Select(t => t.TopicId).ToArray()));
                            csvWriter.NextRecord();
                        }
                    }
        }
示例#12
0
            public string GetCSVLine(string Delimiter = ",")
            {
                var        sb = new StringBuilder();
                var        m  = new StringWriter(sb);
                TextWriter tw = m;                                             // new StreamWriter(m);

                var config = new CsvConfiguration(CultureInfo.CurrentCulture); //.Configuration();

                config.Delimiter = Delimiter;

                var p = new CsvHelper.CsvWriter(tw, config);

                foreach (var c in Columns)
                {
                    p.WriteField(c);
                }
                p.NextRecord();
                p.Flush();


                return(sb.ToString());

                //var dbq = "\"";
                //System.Text.StringBuilder sb = new System.Text.StringBuilder();
                ////string s;
                //bool First = true;
                //if (m_Columns == null)
                //{
                //    m_Columns = new List<string>();
                //}
                //foreach (var s in Columns)
                //{
                //    if (!First)
                //        sb.Append(Delimiter);
                //    else
                //        First = false;
                //    sb.Append(dbq + s.Replace(dbq, dbq + dbq) + dbq);
                //}

                //return sb.ToString();
            }
示例#13
0
 public ActionResult DownloadCareHomes()
 {
     using (var writer = new System.IO.StreamWriter(Response.OutputStream, Encoding.GetEncoding("Shift-JIS")))
         using (var csv = new CsvHelper.CsvWriter(writer))
         {
             csv.WriteField("事業所ID");
             csv.WriteField("事業所名");
             csv.WriteField("登録者氏名");
             csv.WriteField("登録者メールアドレス");
             csv.NextRecord();
             foreach (var c in db.CareHomes.Where(h => h.UserId != null && !h.Deactivated && h.Email != null).Include(h => h.User))
             {
                 csv.WriteField(c.CareHomeCode);
                 csv.WriteField(c.Name);
                 csv.WriteField(c.User.Name);
                 csv.WriteField(c.Email);
                 csv.NextRecord();
             }
         }
     Response.ContentType = "text/csv";
     Log(LogType.Admin, "CSVで事業所一覧をダウンロードしました。");
     return(null);
 }
        private string writeSuggestesCategoriesToFile(List <eBayCategoryResult> categoryResults)
        {
            // create the file to save the product categories
            var fileFullPath = string.Format("{0}\\eBaySuggestedCateories_{1:yyyyMMdd_HHmmss}.csv", _systemJobDirectory, DateTime.Now);

            // write into the file
            using (var streamWriter = new StreamWriter(fileFullPath))
            {
                var writer = new CsvHelper.CsvWriter(streamWriter);

                // let's write first the column's header for the file
                writer.WriteField("EisSKU");
                for (var i = 1; i <= 10; i++)
                {
                    writer.WriteField(string.Format("eBayCategory{0}", i));
                    writer.WriteField(string.Format("FullPath{0}", i));
                }

                // let's move to next row
                writer.NextRecord();

                // then le't write its content
                foreach (var result in categoryResults)
                {
                    writer.WriteField(result.EisSKU);
                    foreach (var category in result.Categories)
                    {
                        writer.WriteField(category.Id);
                        writer.WriteField(category.OptionName);
                    }

                    writer.NextRecord();
                }
            }

            return(fileFullPath);
        }
示例#15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="options"></param>
        /// <param name="hits"></param>
        private static void PrintHits(Options options, List <Hit> hits)
        {
            try
            {
                CsvHelper.CsvWriterOptions csvWriterOptions = SetCsvWriterConfig(options);

                using (MemoryStream memoryStream = new MemoryStream())
                    using (StreamWriter streamWriter = new StreamWriter(memoryStream))
                        using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvWriterOptions))
                        {
                            // Write out the file headers
                            csvWriter.WriteField("Last Modified");
                            csvWriter.WriteField("Last Update");
                            csvWriter.WriteField("Path");
                            csvWriter.WriteField("File Size");
                            csvWriter.WriteField("Process Exec Flag");
                            csvWriter.NextRecord();

                            var sorted = GetSortedHits(options, hits);

                            foreach (Hit hit in sorted)
                            {
                                switch (hit.Type)
                                {
                                case Global.CacheType.CacheEntryXp: // Windows XP Shim Cache
                                    csvWriter.WriteField(hit.LastModified.ToShortDateString() + " " + hit.LastModified.ToShortTimeString());
                                    csvWriter.WriteField(hit.LastUpdate.ToShortDateString() + " " + hit.LastUpdate.ToShortTimeString());
                                    csvWriter.WriteField(hit.Path);
                                    csvWriter.WriteField(hit.FileSize.ToString());
                                    csvWriter.WriteField(hit.ProcessExecFlag);
                                    csvWriter.NextRecord();

                                    break;

                                case Global.CacheType.CacheEntryNt5: // Windows 2k3/Vista/2k8 Shim Cache
                                case Global.CacheType.CacheEntryNt6: // Windows 7/2k8-R2 Shim Cache
                                    csvWriter.WriteField(hit.LastModified.ToShortDateString() + " " + hit.LastModified.ToShortTimeString());
                                    csvWriter.WriteField("N/A");
                                    csvWriter.WriteField(hit.Path);
                                    csvWriter.WriteField("N/A");
                                    csvWriter.WriteField(hit.ProcessExecFlag);
                                    csvWriter.NextRecord();
                                    break;
                                }
                            }

                            string output = string.Empty;
                            memoryStream.Position = 0;
                            using (StreamReader streamReader = new StreamReader(memoryStream))
                            {
                                output = streamReader.ReadToEnd();
                            }

                            Console.Write(output);

                            if (options.Output.Length > 0)
                            {
                                string ret = IO.WriteUnicodeTextToFile(output, options.Output, false);
                                if (ret.Length > 0)
                                {
                                }
                            }
                        }
            }
            catch (Exception ex)
            {
                Console.WriteLine("An error occurred: " + ex.Message);
            }
        }
示例#16
0
 public ActionResult DownloadCareManagers()
 {
     using (var writer = new System.IO.StreamWriter(Response.OutputStream, Encoding.GetEncoding("Shift-JIS")))
         using (var csv = new CsvHelper.CsvWriter(writer))
         {
             csv.WriteField("事業所ID");
             csv.WriteField("ケアマネID");
             csv.WriteField("氏名");
             csv.WriteField("登録者メールアドレス");
             csv.WriteField("生年月日");
             csv.WriteField("性別");
             csv.WriteField("資格取得年月日");
             csv.NextRecord();
             foreach (var m in db.CareManagers.Where(m => m.UserId != null && m.Email != null).Include(m => m.CareHome).Include(m => m.User))
             {
                 csv.WriteField(m.CareHome.CareHomeCode);
                 csv.WriteField(m.CareManagerId);
                 csv.WriteField(m.Name);
                 csv.WriteField(m.Email);
                 csv.WriteField(m.Birthday);
                 csv.WriteField(m.Gender);
                 csv.WriteField(m.Licensed);
                 //csv.WriteField(m.Licenses);
                 csv.NextRecord();
             }
         }
     Response.ContentType = "text/csv";
     Log(LogType.Admin, "CSVでケアマネ一覧をダウンロードしました。");
     return(null);
 }
示例#17
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="options"></param>
        /// <param name="cacheEntries"></param>
        private static void PrintCacheEntries(Options options, List<CacheEntry> cacheEntries)
        {
            try
            {
                CsvHelper.CsvWriterOptions csvWriterOptions = SetCsvWriterConfig(options);

                using (MemoryStream memoryStream = new MemoryStream())
                using (StreamWriter streamWriter = new StreamWriter(memoryStream))
                using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvWriterOptions))
                {
                    // Write out the file headers
                    csvWriter.WriteField("File Path");
                    csvWriter.WriteField("File Name");
                    csvWriter.WriteField("URL");
                    csvWriter.WriteField("Codebase IP");
                    csvWriter.WriteField("Headers");
                    csvWriter.WriteField("Content Length");
                    csvWriter.WriteField("Modified");
                    csvWriter.WriteField("Expiration");
                    csvWriter.WriteField("Validation");
                    csvWriter.NextRecord();

                    var sorted = GetSortedCacheEntries(options, cacheEntries);

                    StringBuilder text = new StringBuilder();

                    foreach (CacheEntry cacheEntry in sorted)
                    {
                        text.AppendFormat("File Path: {0}{1}", cacheEntry.FilePath, Environment.NewLine);
                        text.AppendFormat("File Name: {0}{1}", cacheEntry.FileName, Environment.NewLine);
                        text.AppendFormat("URL: {0}{1}", cacheEntry.Url, Environment.NewLine);
                        text.AppendFormat("Codebase IP: {0}{1}", cacheEntry.CodebaseIp, Environment.NewLine);
                        text.AppendFormat("Headers: {1}{0}", cacheEntry.HeadersText, Environment.NewLine);
                        text.AppendFormat("Content Length: {0}{1}", cacheEntry.ContentLength, Environment.NewLine);

                        if (cacheEntry.LastModified.Year == 1970 | cacheEntry.LastModified.Year == 0001)
                        {
                            text.AppendFormat("Modified: {0}{1}", string.Empty, Environment.NewLine);
                        }
                        else
                        {
                            text.AppendFormat("Modified: {0}{1}", cacheEntry.LastModified.ToShortDateString() + " " + cacheEntry.LastModified.ToShortTimeString(), Environment.NewLine);
                        }

                        if (cacheEntry.ExpirationDate.Year == 1970 | cacheEntry.ExpirationDate.Year == 0001)
                        {
                            text.AppendFormat("Expiration: {0}{1}", string.Empty, Environment.NewLine);
                        }
                        else
                        {
                            text.AppendFormat("Expiration: {0}{1}", cacheEntry.ExpirationDate.ToShortDateString() + " " + cacheEntry.ExpirationDate.ToShortTimeString(), Environment.NewLine);
                        }

                        if (cacheEntry.ValidationTimestamp.Year == 1970 | cacheEntry.ValidationTimestamp.Year == 0001)
                        {
                            text.AppendFormat("Validation: {0}{1}", string.Empty, Environment.NewLine);
                        }
                        else
                        {
                            text.AppendFormat("Validation: {0}{1}", cacheEntry.ValidationTimestamp.ToShortDateString() + " " + cacheEntry.ValidationTimestamp.ToShortTimeString(), Environment.NewLine);
                        }

                        text.AppendLine(string.Empty);

                        csvWriter.WriteField(cacheEntry.FilePath);
                        csvWriter.WriteField(cacheEntry.FileName);
                        csvWriter.WriteField(cacheEntry.CodebaseIp);
                        csvWriter.WriteField(cacheEntry.Url);
                        csvWriter.WriteField(cacheEntry.HeadersText);
                        csvWriter.WriteField(cacheEntry.ContentLength);

                        if (cacheEntry.LastModified.Year == 1970 | cacheEntry.LastModified.Year == 0001)
                        {
                            csvWriter.WriteField(string.Empty);
                        }
                        else
                        {
                            csvWriter.WriteField(cacheEntry.LastModified.ToShortDateString() + " " + cacheEntry.LastModified.ToShortTimeString());
                        }

                        if (cacheEntry.ExpirationDate.Year == 1970 | cacheEntry.ExpirationDate.Year == 0001)
                        {
                            csvWriter.WriteField(string.Empty);
                        }
                        else
                        {
                            csvWriter.WriteField(cacheEntry.ExpirationDate.ToShortDateString() + " " + cacheEntry.ExpirationDate.ToShortTimeString());
                        }

                        if (cacheEntry.ValidationTimestamp.Year == 1970 | cacheEntry.ValidationTimestamp.Year == 0001)
                        {
                            csvWriter.WriteField(string.Empty);
                        }
                        else
                        {
                            csvWriter.WriteField(cacheEntry.ValidationTimestamp.ToShortDateString() + " " + cacheEntry.ValidationTimestamp.ToShortTimeString());
                        }

                        csvWriter.NextRecord();
                    }

                    string output = string.Empty;
                    memoryStream.Position = 0;
                    using (StreamReader streamReader = new StreamReader(memoryStream))
                    {
                        output = streamReader.ReadToEnd();
                    }

                    Console.Write(text);

                    if (options.Output.Length > 0)
                    {
                        string ret = IO.WriteTextToFile(output, options.Output, false);
                        if (ret.Length > 0)
                        {
                            Console.Write("An error occurred whilst outputting the CSV/TSV file: " + ret);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("An error occurred: " + ex.Message);
            }
        }
示例#18
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="options"></param>
        /// <param name="hits"></param>
        private static void PrintHits(Options options, List<Hit> hits)
        {
            try
            {
                CsvHelper.CsvWriterOptions csvWriterOptions = SetCsvWriterConfig(options);

                using (MemoryStream memoryStream = new MemoryStream())
                using (StreamWriter streamWriter = new StreamWriter(memoryStream))
                using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvWriterOptions))
                {
                    // Write out the file headers
                    csvWriter.WriteField("Last Modified");
                    csvWriter.WriteField("Last Update");
                    csvWriter.WriteField("Path");
                    csvWriter.WriteField("File Size");
                    csvWriter.WriteField("Process Exec Flag");
                    csvWriter.NextRecord();

                    var sorted = GetSortedHits(options, hits);

                    foreach (Hit hit in sorted)
                    {
                        switch (hit.Type)
                        {
                            case Global.CacheType.CacheEntryXp: // Windows XP Shim Cache
                                csvWriter.WriteField(hit.LastModified.ToShortDateString() + " " + hit.LastModified.ToShortTimeString());
                                csvWriter.WriteField(hit.LastUpdate.ToShortDateString() + " " + hit.LastUpdate.ToShortTimeString());
                                csvWriter.WriteField(hit.Path);
                                csvWriter.WriteField(hit.FileSize.ToString());
                                csvWriter.WriteField(hit.ProcessExecFlag);
                                csvWriter.NextRecord();

                                break;
                            case Global.CacheType.CacheEntryNt5: // Windows 2k3/Vista/2k8 Shim Cache
                            case Global.CacheType.CacheEntryNt6: // Windows 7/2k8-R2 Shim Cache
                                csvWriter.WriteField(hit.LastModified.ToShortDateString() + " " + hit.LastModified.ToShortTimeString());
                                csvWriter.WriteField("N/A");
                                csvWriter.WriteField(hit.Path);
                                csvWriter.WriteField("N/A");
                                csvWriter.WriteField(hit.ProcessExecFlag);
                                csvWriter.NextRecord();
                                break;
                        }
                    }

                    string output = string.Empty;
                    memoryStream.Position = 0;
                    using (StreamReader streamReader = new StreamReader(memoryStream))
                    {
                        output = streamReader.ReadToEnd();
                    }

                    Console.Write(output);

                    if (options.Output.Length > 0)
                    {
                        string ret = IO.WriteUnicodeTextToFile(output, options.Output, false);
                        if (ret.Length > 0)
                        {

                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("An error occurred: " + ex.Message);
            }
        }