Hallo,
Ich möchte eine Textdatei vom Client über eine ASP-Seite öffnen und den String auslesen.
Habe zur Zeit diese Möglichkeit gefunden kann mir aber nicht vorstellen, das dies die einzige möglichkeit ist, benötige nämlich auch eine Lösung für das speichern einer Textdatei beim Client
Wer kann weiterhelfen. Viele Grüße Knollo
const int BUFFER_SIZE = 255;
int nBytesRead = 0;
Byte[] Buffer = new Byte[BUFFER_SIZE];
StringBuilder strUploadedContent = new StringBuilder("");
Stream theStream = FileUpload1.PostedFile.InputStream;
nBytesRead = theStream.Read(Buffer, 0, BUFFER_SIZE);
while (0 != nBytesRead)
{
strUploadedContent.Append(Encoding.ASCII.GetString(Buffer, 0, nBytesRead));
nBytesRead = theStream.Read(Buffer, 0, BUFFER_SIZE);
}
string pTextString = strUploadedContent.ToString();
char[] pSeparators = new char[] {';'};
string[] pTextArray = pTextString.Split(pSeparators);
for (int Index = 0; Index < pTextArray.Length; Index++)
{
LabelOutput.Text += "<br/>";
LabelOutput.Text += pTextArray[Index];
}
Ich kenne mich nicht so gut mit ASP.NET aus, aber ich würde mal vermuten, dass das Datei auslesen eigentlich gleich laufen sollte:
Einmaliges auslesen/schreiben einer Datei:
//Startet einen Stream, fügt Text eines Strings in die Datei hinzu und schliesst den Stream wieder
System.IO.File.AppendAllText
//Startet einen Stream, schreibt Text eines Strings in die Datei und schliesst den Stream wieder
System.IO.File.WriteAllText
//Startet einen Stream, liest den ganzen Text einer Datei und schliesst den Stream wieder. Rückgabe des Textes als String
System.IO.File.ReadAllText
Ansonsten währen da noch der StreamReader und der StreamWriter.
Btw. Mit dem StringBuilder hab ich schlechte Erfahrung gemacht bzgl. Performance. Vielleicht kannst du Dir den Umweg ersparen
@Knollo:
DU kannst nicht direkt auf dateien eines Klient zugreifen.
Du hast ja da ein FileUploadControll benutzt, das wirklich die datei vom
Browser zum server schickt.
Schreiben kannst Du garnicht direkt.
Wäre ja noch schöner, wen eine ASP.NET Anwendung ( Internetseite ) einfach
so auf meiner Platte rummüllen könnte.
Die Resultate must Du als download anbieten, die der benutzer dann speichern muss.
Btw. Mit dem StringBuilder hab ich schlechte Erfahrung gemacht bzgl. Performance. Vielleicht kannst du Dir den Umweg ersparen
Hi!
Dass das am StringBuilder lag, dass Du Performance Probleme hattest, kann ich mir nicht ganz vorstellen. Dieser ist doch gerade fuer die Erstellung von langen Strings gut geeignet. Wenn Du nur einen "normalen" String verwendest, dann ist das gerade unguenstig bei vielen String-Operationen. Wenn beispielsweise auf einem String stets append() aufrufst, dann wird der String (z.B. String bla = "Hallo") jedes Mal neu erstellt (bla.append("World") ≤ ist nicht mehr der eigentliche String im Speicher, sondern ein Neuer).
Gruss, DaMoe
Danke für die ganzen Antworten, aber kann mir jemand einen BeispielCode aufzeigen, wie ich es besser machen kann.
Original von FZelle
Schreiben kannst Du garnicht direkt.
Wäre ja noch schöner, wen eine ASP.NET Anwendung ( Internetseite ) einfach
so auf meiner Platte rummüllen könnte.Die Resultate must Du als download anbieten, die der benutzer dann speichern muss.
Funktioniert auch nicht wenn der User über uoloadFile eine Datei auswählen würde in die die Daten gespeichert werden sollen?
Nein, Uploadfile überträgt wirklich die Datei vom Browser zum Server und hält sie da vor.
Wenn Du die änderst, tut sich garnichts beim Client, sondern nur auf dem Server.
Du musst dann diese Datei wieder zum Download anbieten.