Skip to content

eduherminio/FileParser

Repository files navigation

FileParser

GitHub Actions Azure DevOps

Nuget

API

FileParser is a .NET library designed to read text files line-by-line, saving each line's content into basic types vars (int, double, string, etc.).

  • .NET Framework 4.6 was supported until v1.4.x.
  • .NET Standard 2.0 and 2.1 were supported until v1.6.x.
  • Nullable is enabled from 1.6.x.

Purpose

This project was born with a very specific purpose: providing a tool with whom easily parse files with a known structure, ideally being as flexible and easy to use as C++ standard IO approach.

For those who don't understand what I mean, here's a simple Use Case (also reposited):

Given the following input.txt, which contains an integer n (>=0) followed by n doubles and a final string,

5 1.1 3.14159265 2.2265 5.5 10 fish

A simple .cpp snippet like the following one could process input.txt, providing that file is selected as standard input source:

./myExecutable < input.txt > output.txt

#include <iostream> #include <list> #include <string> int main() { int _integer; std::string _str; std::list<double> _list; double _auxdouble; // Input start; std::cin>>_integer; for(int i=0; i<_integer; ++i) { std::cin>>_auxdouble; _list.push_back(_auxdouble); } std::cin>>_str; // Input end // Data processing // Output start std::cout<<_integer<<" "; for(const double& d : _list) std::cout<<d<<" "; std::cout<<_str; // Output end return 0; }

Seems effortless to process these kind of simple .txt files using C++, right?

Well, using C# things are not so straight-forward, and that's why FileParser was created for:

using System; using System.Collections.Generic; using System.Globalization; using System.IO; using FileParser; namespace FileParserSample { class Program { static void Main(string[] args) { var cultureInfo = new CultureInfo("en-US"); CultureInfo.DefaultThreadCurrentCulture = cultureInfo; List<double> listDouble = new List<double>(); string str; // Input start IParsedFile file = new ParsedFile("SimpleInput.txt"); IParsedLine firstLine = file.NextLine(); int _integer = firstLine.NextElement<int>(); for(int i=0; i<_integer; ++i) listDouble.Add(firstLine.NextElement<double>()); str = firstLine.NextElement<string>(); // Input end // Data Processing // Output start StreamWriter writer = new StreamWriter("..\\CSharpSimpleOutput.txt"); using (writer) { writer.WriteLine(_integer + " " + string.Join(null, listDouble)); } // Output end } } }

Documentation

I've done my best to create a WIKI describing FileParser API.

Besides the WIKI, some real (own) projects where it has been used are:

Contributing, issues, suggestions, doubts

If anyone else ever happens to use FileParser, I'll be happy to accept suggestions and solve any doubts.

Just open an issue :)

About

C# file parser (.NET 6)

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •  

Languages