Read/Write-text-Datei progressbar in C#
Habe ich eine Funktion die liest einen großen text-Datei,spaltet sich ein Teil(aus einem bestimmten start-und Ende),und speichern Sie die geöffneten Daten in einem anderen text-Datei.da die Datei ist zu groß,ich muss noch ein progressbar beim Einlesen des Streams und ein weiteres, wenn das schreiben der aufgeteilten text in der anderen Datei.Ps.start und Ende sind angegebenen datetime-Wert!!
using (StreamReader sr = new StreamReader(file,System.Text.Encoding.ASCII))
{
while (sr.EndOfStream == false)
{
line = sr.ReadLine();
if (line.IndexOf(start) != -1)
{
using (StreamWriter sw = new StreamWriter(DateTime.Now.ToString().Replace("/", "-").Replace(":", "-") + "cut"))
{
sw.WriteLine(line);
while (sr.EndOfStream == false && line.IndexOf(end) == -1)
{
line = sr.ReadLine();
sw.WriteLine(line);
}
}
richTextBox1.Text += "done ..." + "\n";
break;
}
}
}
Bitte erweitern. Sprechen Sie über silverlight, winforms, WPF? etc.
Die andere Sache, die Sie brauchen, um darüber nachzudenken, ob Sie möchten, dass der Fortschrittsbalken bei 0 beginnen und gehen bis 100, im Gegensatz zu einer Fortschrittsleiste, die Zyklen um über und über. Wenn ja, dann müssen Sie eine Art zu arbeiten heraus, wie viele Zeilen die Datei hat, so dass Sie genau Bericht die Fortschritte.
es ist eine winform
gut für das Lesen, könnte es Zyklus etwa nur für die zeigen, dass die Suche in Arbeit ist..wenn (Zeile.IndexOf(start) != -1) gilt niw der Fortschrittsbalken sollte genau sein, bis, bis es fertig schreiben.
ich kann nicht wirklich Vorhersagen, wie viele Linien gibt es zwischen start-und Ende-da ist es Art von suchen Sie die Zeilen, bis die angeforderte Ende erscheint.oder was meint Ihr?
Die andere Sache, die Sie brauchen, um darüber nachzudenken, ob Sie möchten, dass der Fortschrittsbalken bei 0 beginnen und gehen bis 100, im Gegensatz zu einer Fortschrittsleiste, die Zyklen um über und über. Wenn ja, dann müssen Sie eine Art zu arbeiten heraus, wie viele Zeilen die Datei hat, so dass Sie genau Bericht die Fortschritte.
es ist eine winform
gut für das Lesen, könnte es Zyklus etwa nur für die zeigen, dass die Suche in Arbeit ist..wenn (Zeile.IndexOf(start) != -1) gilt niw der Fortschrittsbalken sollte genau sein, bis, bis es fertig schreiben.
ich kann nicht wirklich Vorhersagen, wie viele Linien gibt es zwischen start-und Ende-da ist es Art von suchen Sie die Zeilen, bis die angeforderte Ende erscheint.oder was meint Ihr?
InformationsquelleAutor user1096252 | 2011-12-20
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das erste, was zu tun wäre, um herauszufinden, wie lange die Datei ist mit FileInfo,
http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx
Ich würde vorschlagen, Sie tun es so,
Die Berechnung des prozentualen Anteils der Datei, die gelesen worden ist und die Einstellung der Statusanzeige auf diesen Wert. Dann brauchen Sie sich nicht zu kümmern, ob die Länge ist lang, und die Fortschrittleiste den int.
Wenn Sie nicht möchten, kürzen Sie den Wert dann erledigen Sie dies (Umwandlung in eine int-oben wird immer abschneiden der Nachkommastellen und damit abgerundet),
Ist dieses auf einem hintergrund-thread? Vergessen Sie nicht, dass Sie diesen Aufruf.Aufrufen die Statusanzeige zu aktualisieren oder sonst erhalten Sie eine cross-thread-exception.
fileInfo.Länge ist zu lang..und progressBar.Maximal hat den Typ int, das wird nicht funktionieren.
Sie können das minimum 0 und das maximum 100 und machen eine Berechnung und Runde es. Ich werde aktualisieren, die Antwort.
Ihren anderen Kommentar gibt - aber denken Sie, dass dies nur funktioniert, wenn die Suche für den Anfang und nicht .... Ich nicht Folgen. Dies sollte aktualisieren Sie den Fortschrittsbalken für jede Zeile der Eingabedatei gelesen wird.
Aussehen es ist eine weitere Zeile = sr.ReadLine(); in den streamwriter!!also die progressbar aktualisiert wird, bevor die Suche starten und nomore nach.(beim Lesen aber nicht beim Lesen und schreiben).vielen Dank peter..
InformationsquelleAutor peter