Nach Download Zeilenumbrüche entfernt

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Bernd.

    Nach Download Zeilenumbrüche entfernt

    Hallo,

    ich hab hier eine kurze Frage zu Downloads von txt-Dateien.
    Ich weiß, dass hier schon mal dasselbe Problem behandelt wurde, aber ich kann nicht beeinflussen, was auf dem Server liegt.
    Also: Ich hab eine txt-Datei mit vielen Zeilenumbrüchen (insg. knapp 1,9 MB reiner Text, jedes Wort eine Zeile). Wenn ich die jetzt mit

    VB.NET-Quellcode

    1. My.Computer.Network.DownloadFile("http://www.adresse.domain/bla.txt", My.Computer.FileSystem.SpecialDirectories.Temp & "\bla.txt")
    runterladen will, funktioniert das, aber dummerweise werden alle Wörter ohne Trennzeichen o.Ä. (dann könnte ich es ja Splitten) direkt hintereinander gehängt.
    Wie kann ich das ändern? Wie schon gesagt, ich kann nichts an der Codierung der Datei beeinflussen (beim Upload).

    Danke, BjöNi
    Ich hab davon zwar keine Ahnung, aber du kannst es ja mal mit 'DownloadString' versuchen ;)
    Sonsten nimm nen WebClienten ^^
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    BjöNi schrieb:

    werden alle Wörter ohne Trennzeichen o.Ä. (dann könnte ich es ja Splitten) direkt hintereinander gehängt.

    Woher willst du das denn wissen?

    Wenn die Datei auf einem Linux-System erzeugt wurde, dann ist der Zeilentrenner normalerweise ein einfaches LF. Die meisten Editoren/Anzeigetools unter Windows erwarten jedoch CR+LF. Aber das hängt wie gesagt vom Programm ab. Ein ZEILENTRENNER ist trotzdem in beiden Fällen vorhanden.
    Du könntest versuchen mit einem Stream das ganze auszulesen und dann eine Zeilen Länge festlegen und dann mit Vbnewline das ganze machen so nach diesem Prinzip:

    VB.NET-Quellcode

    1. If DeinText.Length > 20 Then
    2. deintext.Insert(20, vbNewLine)
    3. End If

    Ich muss zugestehen habe das nicht getestet und nur so schnell geschrieben, dafür musste natürlich die Txt auslesen und dann so inetwa bearbeiten lassen.
    Wenn die Datei auf einem Linux-System erzeugt wurde, dann ist der Zeilentrenner normalerweise ein einfaches LF. Die meisten Editoren/Anzeigetools unter Windows erwarten jedoch CR+LF. Aber das hängt wie gesagt vom Programm ab.

    Vielleicht habe ich mich nicht genau genug ausgedrückt: Das Problem liegt nicht an der Orginalformatierung (glaub ich zumindestens...), weil es klappt nämlich alles (die Zeilenumbrüche sind da!), wenn ich die Datei im Browser öffne und dann über "Speichern unter..." abspeichere und im Windows Editor, in Word oder was anderem öffne.
    Die Zeilenumbrüche sind erst weg, wenn die Datei über

    VB.NET-Quellcode

    1. My.Computer.Network.DownloadFile("http://www.adresse.domain/bla.txt", My.Computer.FileSystem.SpecialDirectories.Temp & "\bla.txt")
    runtergeladen wurde und dann geöffnet wird.

    Du könntest versuchen mit Environment.NewLine zu Splitten.
    Es gibt ja auch CrLF, LF und Cr
    Ähmmm... Die Zeilenumbrüche sind weg - oder wie meinst du das? Soll sich der Computer aus den Fingern Tasten saugen, wo die Zeilenumbrüche mal waren?

    BjöNi schrieb:

    glaub ich zumindestens...

    Der Glaube versetzt zwar Berge ist als Fehleranalysetool aber denkbar ungeeignet.

    wenn ich die Datei im Browser öffne und dann über "Speichern unter..." abspeichere

    Ja, toll.
    BROWSER erkennen ALLE möglichen "Zeilenumbrüche" und zeigen sie korrekt an. Beim Speichern kann es dann gut sein, dass er die "korrekten" (BS-spezifisch) Umbrüche setzt.

    Lade die Datei runter und schau sie dir mit einem Hex-Editor o.ä. an. Was steht am Ende jeder "Zeile"?
    Ein "0A" - genau wie beim Orginal...

    Das sind die ersten 3 Zeilen/Wörter:
    00000000: 41 61 6C 0A 41 61 72 0A 41 61 72 6F 6E


    In Wirklichkeit heißt es:
    Aal
    Aar
    Aaron

    BjöNi schrieb:

    Ein "0A"

    Wer hatte also recht? ICH ;)
    0x0a = 10 = ASCII LF = Linux Zeilentrenner.
    Die meisten Windows-Editoren möchten gerne 1310 "sehen", also CR-LF. Aber das ist halt Nebensache. Zeilentrenner SIND vorhanden. Auch NACH dem Download und NACH dem abspeichern. Wenn du CR-LF reinhaben willst, ersetze halt einfach alle LF durch CRLF.