コード例 #1
0
 private ITokenizer GetTokenizer <T>(Resources.FileSize fileSize)
     where T : class, ITokenizer
 {
     return((ITokenizer)Activator.CreateInstance(typeof(T), new object[] {
         Resources.GetStream(fileSize),
         new TokenizerSettings(
             new byte[] { (byte)'\n', (byte)'\r' },
             new byte[] { (byte)Resources.GetSeperator(fileSize) },
             Encoding.UTF8,
             true)
     }));
 }
コード例 #2
0
        private CsvReader GetCsvHelperReader(Resources.FileSize fileSize)
        {
            var config = new CsvHelper.Configuration.Configuration()
            {
                Delimiter    = Resources.GetSeperator(fileSize).ToString(),
                BadDataFound = (data) => Debug.WriteLine($"Bad Data Found: {data}")
            };

            var stream = new StreamReader(Resources.GetStream(fileSize));

            return(new CsvReader(stream, config));
        }
コード例 #3
0
        private IDisposable GetTokenizer(ParsingMethod method, Resources.FileSize fileSize)
        {
            switch (method)
            {
            case ParsingMethod.CsvHelper: return(GetCsvHelperReader(fileSize));

            case ParsingMethod.Pipeline: return(GetPipelineTokenizer(fileSize));

            case ParsingMethod.StreamReader: return(GetStreamReaderTokenizer(fileSize));

            case ParsingMethod.MemoryManaged: return(GetMemoryManagedTokenizer(fileSize));

            default: throw new InvalidOperationException();
            }
        }
コード例 #4
0
        public async Task <object> Parse(ParsingMethod method, Resources.FileSize fileSize)
        {
            switch (method)
            {
            case ParsingMethod.CsvHelper:
            {
                var reader = (CsvReader)Open(method, fileSize);

                int count = 0;

                while (await reader.ReadAsync())
                {
                    count++;
                    Debug.WriteLine(reader.ToString());
                }

                Debug.WriteLine($"Read {count} rows");

                return(reader);
            }

            default:
            {
                var tokenizer = (ITokenizer)GetTokenizer(method, fileSize);
                Debug.WriteLine($"Reading file, size = {fileSize}");

                ISection row;
                int      count = 0;
                while (true)
                {
                    row = await tokenizer.GetNextAsync();

                    if (row == null)
                    {
                        break;
                    }

                    count++;
                }

                Debug.WriteLine($"Read {count} rows");
                return(tokenizer);
            }
            }
        }
コード例 #5
0
 public IDisposable Open(ParsingMethod method, Resources.FileSize fileSize)
 {
     return(GetTokenizer(method, fileSize));
 }
コード例 #6
0
 private ITokenizer GetMemoryManagedTokenizer(Resources.FileSize fileSize)
 {
     return(GetTokenizer <MemoryManagedTokenizer>(fileSize));
 }
コード例 #7
0
 private ITokenizer GetStreamReaderTokenizer(Resources.FileSize fileSize)
 {
     return(new StreamReaderTokenizer(new StreamReader(Resources.GetStream(fileSize)), disposeStream: true));
 }
コード例 #8
0
 private ITokenizer GetPipelineTokenizer(Resources.FileSize fileSize)
 {
     return(GetTokenizer <PipelineStreamTokenizer>(fileSize));
 }