VB2010 - Datei auslesen und verändert speichern

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    VB2010 - Datei auslesen und verändert speichern

    Hallo zusammen,
    Ich möchte gerne eine *.acf Datei (Stammt aus einem Steam Ordner) auslesen und verändert speichern. Allerdings kenne ich das Format nicht, und stehe auf dem schlauch wie ich vorgehen sollte.
    Unten angehängt ist der Inhalt einer solchen Datei.

    Ich möchte gerne die Werte von name, LastUpdated, SizeOnDisk, buildid, BytesToDownload, BytesDownloaded auslesen und abgeändert speichern.
    Mein erster Gedanke war alles Zeile für Zeile auszulesen, dann zu prüfen ob in der zeile vier mal ein anführungszeichen ist, wenn ja auf zu splitten und das auszulesen... Allerdings bekomme ich dann probleme das ganze wieder abzuspeichern.

    Könnt Ihr mir weiter helfen?
    Lg

    C#-Quellcode

    1. "AppState"
    2. {
    3. "appid" "10"
    4. "Universe" "1"
    5. "name" "Counter-Strike"
    6. "StateFlags" "4"
    7. "installdir" "Half-Life"
    8. "LastUpdated" "1536158247"
    9. "UpdateResult" "0"
    10. "SizeOnDisk" "319073875"
    11. "buildid" "3035715"
    12. "LastOwner" "76561197965079775"
    13. "BytesToDownload" "13344"
    14. "BytesDownloaded" "13344"
    15. "AutoUpdateBehavior" "0"
    16. "AllowOtherDownloadsWhileRunning" "0"
    17. "ScheduledAutoUpdate" "0"
    18. "UserConfig"
    19. {
    20. "language" "english"
    21. }
    22. "InstalledDepots"
    23. {
    24. "11"
    25. {
    26. "manifest" "5409698211357392604"
    27. }
    28. "95"
    29. {
    30. "manifest" "7685864384078520360"
    31. }
    32. "10"
    33. {
    34. "manifest" "399817745093809324"
    35. }
    36. }
    37. "MountedDepots"
    38. {
    39. "11" "5409698211357392604"
    40. "95" "7685864384078520360"
    41. "10" "399817745093809324"
    42. }
    43. "SharedDepots"
    44. {
    45. "1" "70"
    46. "3" "70"
    47. "2" "70"
    48. }
    49. "ShaderDepot"
    50. {
    51. "ManifestID" "399817745093809324"
    52. "DepotSize" "59722"
    53. }
    54. }
    In eine List(Of String) alle Zeilen per IO.ReadAllLines einlesen, jede Zeile durchgehen und mit .Contains("name") durchsuchen, jene Zeile (und die anderen gewünschten) modifizieren und dann per IO.WriteAllLines zurück in die Datei.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Aod schrieb:

    Allerdings kenne ich das Format nicht
    Sieht doch sehr simpel aus.
    Fast wie ein JSon ohne bzw. mit nem {Tab} als Trennzeichen.
    Lies es ein, schmeiß alles, was nicht {} und "..." ist, raus und speichere es dann wieder so, dass der Ausgangszustand rauskommt.
    Achte auf die Anzahl der Tabulatoren.
    Teste, ob das Zielprogramm den Output versteht.
    Wenn das klappt, mach Deine Manipulationen und feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!