Esempio n. 1
0
        DataTable ReadDataFromTextFileManually(ExtendedFile file)
        {
            DataTable table = new DataTable(file.Name);

            if (!FileTypes.isTextFile(file))
            {
                return(table);
            }

            var lines     = File.ReadAllLines(file.File.FullName);
            var delimiter = Delimiters.GetDelimiterByHeader(lines.First());
            var fileRows  = SplitLines(lines, delimiter);
            var columns   = fileRows.First()
                            .Where(x => !string.IsNullOrWhiteSpace(x))
                            .Select(x => new DataColumn(x.TrimQuotes())).ToArray();

            table.Columns.AddRange(columns);

            foreach (var fileRow in fileRows.Skip(1))
            {
                var updatedRow = fileRow.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
                if (columns.Length == updatedRow.Length)
                {
                    var newTableRow = table.NewRow();
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        newTableRow[i] = updatedRow[i].TrimQuotes();
                    }
                    table.Rows.Add(newTableRow);
                }
            }
            return(table);
        }
Esempio n. 2
0
 public static bool isTextFile(ExtendedFile file) => file.Type.Equals(TXT) || file.Type.Equals(CSV) || file.Type.Equals(TSV);
Esempio n. 3
0
        public PropertyItem GetProperty(IPropertyProvider providerList, ProcessorItem item, string propertyName)
        {
            if (!File.Exists(item.Value))
            {
                return(null);
            }

            if (!Enum.TryParse(propertyName, true, out FileDetail detail))
            {
                return(null);
            }

            string mime = MimeTypesMap.GetMimeType(item.Value);

            // HACK: Work out a better solution for file detail naming translation (e.g. width -> framewidth, if video, etc..)
            // Might be better being embedded in the ExtendedFile class.
            if (mime.StartsWith("video"))
            {
                if (detail == FileDetail.Width)
                {
                    detail = FileDetail.FrameWidth;
                }
                else if (detail == FileDetail.Height)
                {
                    detail = FileDetail.FrameHeight;
                }
            }
            else if (mime.StartsWith("image"))
            {
                if (detail == FileDetail.FrameWidth)
                {
                    detail = FileDetail.Width;
                }
                else if (detail == FileDetail.FrameHeight)
                {
                    detail = FileDetail.Height;
                }
            }

            if (!isBulkMode || file == null)
            {
                file = new ExtendedFile(item.Value);
            }

            dynamic value = file.GetExtendedProperty(detail);

            if (!isBulkMode)
            {
                file?.Dispose();
                file = null;
            }

            if (value == null)
            {
                return(null);
            }

            if (value is string str)
            {
                return(new PropertyItem(str));
            }
            else
            {
                double numericValue = Convert.ChangeType(value, typeof(double));

                Enum unit = null;

                if (detail == FileDetail.Duration)
                {
                    numericValue /= 10000;
                    unit          = DurationUnit.Millisecond;
                }
                else if (detail == FileDetail.TotalBitrate)
                {
                    unit = BitRateUnit.BitPerSecond;
                }

                return(new PropertyItem(numericValue, unit));
            }
        }
Esempio n. 4
0
 public static bool isExcelWorksheet(ExtendedFile file) => file.Type.Equals(XLS) || file.Type.Equals(XLSX);
Esempio n. 5
0
 public void End()
 {
     isBulkMode = false;
     file?.Dispose();
     file = null;
 }