private void AssertWriter(string expectedOutput, Action <ArffWriter> action) { using (MemoryStream memoryStream = new MemoryStream()) using (ArffWriter arffWriter = new ArffWriter(memoryStream)) { action(arffWriter); arffWriter.Flush(); memoryStream.Seek(0, SeekOrigin.Begin); using (StreamReader streamReader = new StreamReader(memoryStream, new UTF8Encoding(false), true, 4096, true)) Assert.AreEqual(expectedOutput, streamReader.ReadToEnd()); } }
private void WriteArffFile(string[] allfiles) { using (ArffWriter arffWriter = new ArffWriter(textBox3.Text + ".arff")) { bool relation = true; object[] inst = null; object[][] insts = new object[allfiles.Length][]; int n = 0; foreach (string file in allfiles) { FileInfo fi = new FileInfo(file); ArffReader datafile = new ArffReader(file); ArffHeader header = datafile.ReadHeader(); var instances = datafile.ReadAllInstances(); //var instance = datafile.ReadInstance(); object[] instance = null; foreach (var ins in instances) { instance = ins; } if (header != null) { var attributes = header.Attributes; string line; StreamReader attrfile = new StreamReader("attributes.txt"); int i = 0; int j = 0; while ((line = attrfile.ReadLine()) != null) { foreach (var attribute in attributes) { if (attribute.Name == line) { if (relation == true) { arffWriter.WriteRelationName(header.RelationName); relation = false; } arffWriter.WriteAttribute(new ArffAttribute(attribute.Name, attribute.Type)); j++; } i++; } } inst = new object[j]; j = 0; i = 0; while ((line = attrfile.ReadLine()) != null) { foreach (var attribute in attributes) { if (attribute.Name == line) { inst.SetValue(instance.GetValue(i), j); j++; } i++; } } insts.SetValue(inst, n); attrfile.Close(); } datafile.Dispose(); n++; progress++; } foreach (var ins in insts) { arffWriter.WriteInstance(new object[] { ins }); } } }