[VB.Net] Datei platzsparend in einen String einlesen

  • Allgemein

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Glossy Cherry.

    [VB.Net] Datei platzsparend in einen String einlesen

    Hey,
    Erstmal zu der Sektion: ich habe die Off-Topic Sektion ausgesucht da ich dachte da ich kein Code-Problem habe, das es nicht in die vb sektion gehört.

    Nun zu meiner eigentlichen Frage:
    Ich suche eine Methode Dateien (~1GB) platzsparend in einen String einzulesen, base64 + rijandael tut dies nicht wirklich.

    Ich hoffe ihr wisst da ein Paar methoden. ;)
    Greetz

    *Topic verschoben*
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Du könntest die Datei höchstens erst GZippen, das verkleinert sie denke ich ungemein.
    Trotzdem müsste sie dafür erst mal in den Speicher.

    Allerdings ist die Frage, ob wirklich die komplette Datei auf einmal benötigt wird.
    Verwende ansonsten einen FileStream. Dieser lädt nicht die ganze Datei in den Speicher, sondern öffnet sie nur. Dann kannst du einen StreamReader zum vereinfachten Lesen verwenden, so dass du mit seinen ReadLine() und Read()-Methoden problemlos an die Daten kommst, ohne exzessiv RAM zu verbrauchen.
    Hey,
    Das zippen wäre sinnlos, da ich ja ganze ordner einlesen will, und jede einzelne Datei dann zu zippen würde länger dauern, oder nicht?
    Und wenn ich die dateien per filestream + streamreader einlesen würde, könnte ich diese dann wieder als funktionsfähige datei abspeichern?

    Greetz
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?

    VB.NET-Quellcode

    1. Using fs As New FileStream("dateipfad") ' Datei öffnen
    2. Using gz As New GZipStream(fs, CompressionMode.Compress) ' Komprimieren
    3. Using strw As New StreamWriter(gz) ' neuer StreamWriter
    4. strw.WriteLine("compressed") ' Wird direkt komprimiert in die Datei geschrieben

    Auslesen:

    VB.NET-Quellcode

    1. Using fs As New FileStream("dateipfad") ' Datei öffnen
    2. Using gz As New GZipStream(fs, CompressionMode.Decompress) ' Dekomprimieren
    3. Using strr As New StreamReader(gz) ' neuer StreamReader
    4. strr.ReadLine()

    Viel Spaß! :P
    Wenn du willst, dass andere Programme auch noch was damit anzufangen wissen, dann lass das Komprimieren weg. :)
    Btw. solltest du beim Erstellen des FileStreams eventuell noch die Parameter FileMode, FileAccess und FileShare im Konstruktor angeben.
    Hey,

    VB.NET-Quellcode

    1. Dim fs As New FileStream(Filename, FileMode.Open, FileAccess.Read)
    2. Dim strr As New StreamReader(fs)

    wenn ich hiermit eine docx datei durchlaufe, und diese dann später 1;1 wieder abspeichere, kann word diese nicht mehr öffnen.

    Greetz
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    Was machst du denn mit der .docx-Datei, dass du sie später wieder abspeichern musst?
    Btw. sind .docx nichts anderes als .zips.
    Hey,
    Ich mache mit dieser Datei nichts, das ist es eben.
    Wenn ich es mit base64 mache funktioniert die datei danach 1A, wenn ich es mit dem streamreader/streamwriter mache nicht?

    Greetz
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Glossy Cherry“ ()

    Hey,

    VB.NET-Quellcode

    1. Dim strr As New StreamReader(Filename)
    2. Dim streamwrite As New StreamWriter("C:\Users\xxx\Desktop\testz.docx")
    3. streamwrite.Write(strr.ReadToEnd)
    4. streamwrite.Close()


    testz.docx hat 3,95MB und ihre original Datei 2,17MB

    Greetz
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    für Kopiervorgänge sollteman ühaupt keinen Reader oder Writer nehmen. Das sind Byte-Operationen, und die sollteman halt Byte-Block-weise ausführen.
    Ein Reader/Writer ist immer eine Art Konverter (meist nach Text, aber Binary-Reader/Writer ist zB. multifunktional), aber beim Kopieren wird nix konvertiert.
    Hey,

    VB.NET-Quellcode

    1. Dim br As New BinaryReader(File.Open(Filename, FileMode.Open))
    2. Dim memStream As New MemoryStream()
    3. memStream.Position = 0
    4. Dim memoryData(CInt(memStream.Length - memStream.Position) - 1) As Char
    5. For i = 0 To memoryData.Length - 1
    6. memoryData(i) = Convert.ToChar(br.Read())
    7. Next i
    8. MsgBox(memoryData)

    Was mache ich falsch sodass die msgbox nichts ausgibt?

    Greetz
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?

    Glossy Cherry schrieb:

    Was mache ich falsch
    Vor allem ignorierst du meine Hinweise, und beschäftigst dich weiterhin mit zu nichts führendem Mumpitz.

    Dafür darfst du auf meine Ignorierliste.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hey,
    Wie meinst du das?

    Dafür darfst du auf meine Ignorierliste.


    Greetz
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Glossy Cherry“ ()