Parsing large flat files with irregular delimiters

using System; using System.Collections; using System.IO; using System.Text; using System.Text.RegularExpressions; namespace FileSplitter { class Program { public static void Main(string[] args) { if(args.Length < 4){ Console.WriteLine("Usage: "); } else { string FilePathnName = args[0]; string oFilePathnName = "Candidates"; //string oFilePathnName = "Requisitions"; string cLine = null; string cDelim = null; string rDelim = "<><>"; string nRow = null; string oRow = null; string sRow = null; int iCount = 0; string strBuild = null; string sColumn = "candidatehrms_code|firstname|middlename|lastname|address1|address2|city|state|zip|countryhrms_code|email|login|password|isemployee|statushrms_code|resumertf|referraltypehrms_code|referraldetail|active|homephone<><>"; //string sColumn = "requisitionhrms_code|jobtitle|markettitle|orderdate|statusdate|createdate|internalexpires|jobcode|jobgradehrms_code|externaljobdescription|internaljobdescription|approved|statushrms_code|openings|placements|flsaexempt|fullpart|eligibleemployeereferral|wagecurrencyhrms_code|countryhrms_code|departmentshrms_code|locationhrms_code|hiringmanagerhrms_code|recruiterhrms_code|eeocodehrms_code|jobcategoryhrms_code|percenttravel|workflowhrms_code|webapproved|confidentialreq|supervisory|active|udfhirereqid|requisitiontypehrms_code|employmenttypehrms_code|incumbentname|aibtarget<><>"; StreamReader sReader = new StreamReader(FilePathnName); StreamWriter sWriter; while(sReader.Peek() >= 0){ sRow = sRow + sReader.ReadLine(); if(sRow.Contains("~~")){ iCount = iCount + 1 ; string[] dRow = sRow.Split("~~".ToCharArray()); if(dRow.Length > 1){ oRow = dRow[0]; sRow = dRow[1] + dRow[2]; strBuild = strBuild + oRow + "<><>"; if(iCount == 1500){ strBuild = sColumn + strBuild; sWriter = File.CreateText(oFilePathnName + "_" + DateTime.Now.ToString("yyyyMMdd")+ "_" + DateTime.Now.ToString("HHmmss")+ ".txt"); sWriter.Write(strBuild); sWriter.Close(); iCount = 0; strBuild = null; } else{ if(sReader.Peek() <= 0 ){ strBuild = sColumn + strBuild; sWriter = File.CreateText(oFilePathnName + "_" + DateTime.Now.ToString("yyyyMMdd")+ "_" + DateTime.Now.ToString("HHmmss")+ ".txt"); sWriter.Write(strBuild); sWriter.Close(); iCount = 0; strBuild = null; } } } } } } } } } Now the only remaining issue is that it strips \r \n and replaces it with tabs and i have no idea why.

Comments

Write your comment

(it will not be displayed)