Skip to content

Navigation Menu

Sign in
Sign up

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

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /