.Net und das Windows File System

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    .Net und das Windows File System

    Hi,

    ich habe ein ganz simples Problem, dass ihr sicherlich (nachsichtig) lösen könnt.

    Ich habe einen File, dessen Pfad in myObject steht.

    Diesen File lese ich ein in die Variable myText und schreibe den Inhalt nach myNewObject

    VB.NET-Quellcode

    1. File.WriteAllText(myNewObject, myText, utf8)


    Danach lösche ich die Quelldatei myObject

    File.Delete(myObject)

    Das klappt auch alles mit Try ... Catch ...

    Aber ...

    ... wenn ich danach auf myNewObject zugreifen will, dann wird die Datei nicht gefunden!

    Und tatsächlich, wenn ich im Debugger nach dem Delete anhalte, dann erscheint myObject nicht mehr (da gelöscht) ... aber myNewObject erscheint auch nicht, obwohl erfolgreich geschrieben !

    Erst wenn mein Programm endet, erscheint myNewObject im File Explorer.

    Mit anderen Worten: die Anweisung File.Delete macht sofort einen Update im File System. Die Anweisung File.WriteAllText macht KEINEN Update, sondern das wird erst vom Windows am Programmende ausgelöst.

    Mir scheint, dass da eine CLOSE Anweisung fehlt ... nur wie und wo kodiere ich das ?

    Vermutlich ist das eine Sache, die ich längst wissen müsste ... vielleicht seid ihr trotzdem so nett und bringt mir das schonend bei ... :)

    LG
    Peter
    Welchen Inhalt haben myObject und myNewObject? Und wo ist der ganze code zu deiner Beschreibung?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    mh ... ist der genaue Inhalt wirklich so von Bedeutung ... aber gut :

    myObject = '"X:\d-disk\bdaten\ImportCsv\Debug-Hugo Bk (2015 - heute) 2019-11-30 IN.csv"

    myNewObject = "X:\d-disk\bdaten\ImportCsv\Debug-Hugo Bk (2015 - heute) 2019-11-30 OUT.csv"

    Der ganze Code ist ein bissl länglich ... aber die entscheidenden Anweisungen habe ich eingestellt.

    LG
    Peter

    Peter329 schrieb:

    aber die entscheidenden Anweisungen habe ich eingestellt.

    Offenkundig nicht, denn der folgende Code funktioniert bei mir und die neue Date bleibt stehen

    C#-Quellcode

    1. string myObject = "F:\\Test\\Debug-Hugo Bk (2015 - heute) 2019-11-30 IN.csv";
    2. string myNewObject = "F:\\Test\\Debug-Hugo Bk (2015 - heute) 2019-11-30 OUT.csv";
    3. string myText = File.ReadAllText(myObject, Encoding.UTF8);
    4. File.WriteAllText(myNewObject, myText, Encoding.UTF8);
    5. File.Delete(myObject);
    @Peter329 File.WriteAll_XXX() genügt vollständig, die Datei zu schreiben.
    Mit diesem Code und Inhalt kann ich Deinen Effekt nicht nachvollziehen.

    Wie lang ist denn die Datei?
    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!

    Peter329 schrieb:

    aber die entscheidenden Anweisungen habe ich eingestellt.
    Offensichtlich nicht... verstehe nicht warum man hier nicht einfach den relevanten Code postet oder zumindest code mit dem man das ganze reproduzieren kann.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    ok ok ... tausendmal sorry ... ich habe den Inhalt der Variablen versehentlich überschrieben ...

    File.WriteAllText macht einen Update auf das File System. Alles im Lot ... Danke für eure Hilfe ...

    LG
    Peter
    Genau darum ist der code so wichtig. Meisten meint man nämlich das dieser etwas anderes macht, als er tatsächlich tut. Das kann man per debugging gut heraus finden. Einfach nen breakpoint setzen und dann schrittweise durch den code gehen und dabei den Inhalt der Variablen prüfen. Hab dazu glaub nen link in der Signatur.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen