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.
Nullableis enabled from 1.6.x.
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 fishA 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 } } }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:
If anyone else ever happens to use FileParser, I'll be happy to accept suggestions and solve any doubts.
Just open an issue :)