C# : Zeilen auslesen und in Textdatei schreiben
Mein Programm funktioniert nicht...ich habe 4 Textdateien, die jeweils etwa 300 Zeilen mit nur einer kurzen Info je Zeile (Zb. Name), wobei Zeile 1 aus jeder Datei im Zusammenhang steht.
Nun brauche ich eine weitere Textdatei, die Zeile 1 aus Datei 1,2,3 und 4 nimmst und in einen kleinen Abschnitt schreibt. Dann Zeile 2 aus Datei 1,2,3 und 4 und einen weiteren Abschnitt mit den Infos
Mein Code bisher (C#, Windows Forms):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Threading;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Programm4 : Form
{
public Programm4()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string pathOU = textBox1.Text;
string pathCN = textBox2.Text;
string pathVorname = textBox3.Text;
string pathNachname = textBox4.Text;
string pathNeu = textBox5.Text;
string[] OUs = File.ReadAllLines(pathOU);
string[] CNs = File.ReadAllLines(pathCN);
string[] Vornamen = File.ReadAllLines(pathVorname);
string[] Nachnamen = File.ReadAllLines(pathNachname);
string[] FertigeDatensätze;
for (int i = 0; i < OUs.Count(); i++)
{
FertigeDatensätze[i] = "dn: cm=" + CNs[i] + ",ou=" + OUs[i] + ",ou=Extern,o=CLAAS\nobjectClass: Top\nobjectClass: claasUserExtension\nobjectClass: Person\nobjectClass: inetOrgPerson\nobjectClass: organizationalPerson\nobjectClass: ndsLoginProperties\nclaasUserType: extern\nmail: " + CNs[i] + "\ngivenName: " + Vornamen[i] + "\nfullName: " + Vornamen[i] + " " + Nachnamen[i] + "\nsn: " + Nachnamen[i] + "\nclaasApplRoleNames: cn=CDEX_EXTERN,ou=CDEX,ou=EBApps,o=CLAAS\nPassword: \n\n";
}
File.WriteAllText(pathNeu, FertigeDatensätze);
}
}
}


2 Antworten
Als erstes ist die Definition der Methode "File.WriteAllText()" wie folgt:
public static void WriteAllText( string path, string contents )
Du übergibst der Methode einen String und ein String-Array. Daher kommt dein Fehler.
Ein einfache Möglichkeit aus dem String-Array eine String zu machen, wäre folgende Funktion:
var datensatz = string.Join(" ", FertigeDatensätze);
Damit werden die einzelnen Strings mit einem Leerzeichen getrennt in die String-Variable geschrieben.
Strings sind unveränderbar (immutable). Das heißt, wenn du Strings mit "+" zusammenfügst, wird immer ein neuer String erzeugt. Bei der Codezeile
FertigeDatensätze[i] = "dn: cm=" + CNs[i] + ",ou=" + OUs[i] + ",ou=Extern,o=CLAAS\nobjectClass: Top\nobjectClass: claasUserExtension\nobjectClass: Person\nobjectClass: inetOrgPerson\nobjectClass: organizationalPerson\nobjectClass: ndsLoginProperties\nclaasUserType: extern\nmail: " + CNs[i] + "\ngivenName: " + Vornamen[i] + "\nfullName: " + Vornamen[i] + " " + Nachnamen[i] + "\nsn: " + Nachnamen[i] + "\nclaasApplRoleNames: cn=CDEX_EXTERN,ou=CDEX,ou=EBApps,o=CLAAS\nPassword: \n\n";
wird das 13 Mal (multipliziert mit der Länge des Arrays) durchgeführt. Das verringert die Performance des Programms. Du solltest die Klasse "StringBuilder" bzw. die Methode "string.Format()" verwenden.
Sry, aber der Code auf dem Bild ist zu klein, und das, was du da rein kopiert hast zu entziffern ist bisschen schwer....
Warum machst du das überhaupt mit Windows Forms?
Womit sollte ich das sonst machen? Bin Anfänger im Programmieren, kann nur Konsole und Forms ein bisschen.