i have text files, something like:
USER % THIS IS A USER LINE ALL CHAR EXCEPT '/n'
USERDATA % "DATA: ALL CHAR. it can be 3-20 lines."
so i need to read this file and make XML like that:
<?xml version="1.0" encoding="UTF-8"?>
<USERS>
<DATA>
<USER>THIS IS A USER LINE ALL CHAR EXCEPT '/n'</USER>
<USERDATA>DATA: ALL CHAR. it can be 3-20 lines.</USERDATA>
</DATA>
</USERS>
so i make it single thread. Here some code
So i need to make programm multithreaded. So i make it with Parallel.ForEachCode:public static void SingleThreadForEach(IEnumerable<string> LoadPath) { foreach (string itemFile in LoadPath) { string[] CurrentData = ReadText(itemFile); using (XmlWriter writer = XmlWriter.Create(itemFile.Replace(".txt", ".xml"))) { writer.WriteStartDocument(); writer.WriteStartElement("USERS"); writer.WriteStartElement("Data"); writer.WriteElementString("USER", CurrentData[0]); writer.WriteElementString("USERDATA", CurrentData[1]); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); } } } public static string[] ReadText(string path) { string[] lines = File.ReadAllLines(path); string[] XMLData = new string[2]; XMLData[0] = lines[0].Remove(0,9); XMLData[1] = string.Join(Environment.NewLine,lines.Where(s => s != lines[0]).ToArray()) ; return XMLData; }
Here is my projectProject.rarCode:public static void ParallelForEachReading(IEnumerable<string> LoadPath) { Parallel.ForEach(LoadPath, itemFile => { string[] CurrentData = ReadText(itemFile); using (XmlWriter writer = XmlWriter.Create(itemFile.Replace(".txt", ".xml"))) { writer.WriteStartDocument(); writer.WriteStartElement("USERS"); writer.WriteStartElement("DATA"); writer.WriteElementString("USER", CurrentData[0]); writer.WriteElementString("USERDATA", CurrentData[1]); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); } }); }


Reply With Quote
