FileParser es una biblioteca de .NET diseñada para leer archivos de texto línea por línea, guardando el contenido de cada línea en tipos básicos vars (int, double, string, etc.).
Nullable está habilitado desde 1.6.x. Este proyecto nació con un propósito muy específico: proporcionar una herramienta con la que se analiza fácilmente los archivos con una estructura conocida, idealmente ser tan flexible y fácil de usar como el enfoque IO estándar C ++.
Para aquellos que no entienden lo que quiero decir, aquí hay un caso de uso simple (también reposado):
Dado la siguiente input.txt , que contiene un entero n (> = 0) seguido de n dobles y una cadena final,
5 1.1 3.14159265 2.2265 5.5 10 fish Un fragmento .cpp simple como el siguiente podría procesar input.txt , siempre que ese archivo esté seleccionado como fuente de entrada estándar:
./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 ;
} Parece fácil de procesar este tipo de archivos .txt simples usando C ++, ¿verdad?
Bueno, usar C# las cosas no son tan directas, y es por eso que se creó FileParser para:
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
}
}
} He hecho todo lo posible para crear una wiki que describe la API FileParser.
Además del wiki, algunos proyectos reales (propios) donde se ha utilizado son:
Si alguien más usa FileParser, estaré encantado de aceptar sugerencias y resolver cualquier duda.
Solo abre un problema :)