noch belegte Datei kann nicht kopiert werden

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    noch belegte Datei kann nicht kopiert werden

    Hallo zusammen,

    sicher eine Anfängerfrage... :(

    Ich lese ein XDocument mit .Load ein um es zu bearbeiten. Nach der Bearbeitung speichere ich da Ganze mit .Save und möchte nun die Datei kopieren, aber es klappt nicht, die Datei ist weiterhin belegt.

    Mache ich was falsch? Ich kann ja das XDocument nicht freigeben damit ich die Datei kopieren kann.


    :(

    Gruss,
    Daniel
    Hi,

    sieht so aus:

    VB.NET-Quellcode

    1. If IO.File.Exists(strFileName) Then
    2. 'File einlesen
    3. xDocEng = XDocument.Load(strEngCacheFile)
    4. .
    5. .
    6. .
    7. end if


    Nach dem bearbeiten speichere ich das ganze über "xDocEng.Save(strFileName)"

    Nanach möchte ich das File kopieren, aber dann bekomme ich den IOException das die Datei belegt ist.



    Viele Grüsse,
    Daniel

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

    Vielleicht stellst Du Dein Load auf Load(Stream) um, die sähe dann so aus:

    VB.NET-Quellcode

    1. Dim xd As New System.Xml.Linq.XDocument
    2. Using fs As New System.IO.FileStream("PATH", IO.FileMode.Open)
    3. xd.Load(fs)
    4. End Using
    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!
    Das reine kopieren einer Datei kannst du dann einfach mit System.IO.File.Copy(from, to) erledigen. Beim Stream müssen eben die Ressourcen wieder freigegeben, was dann wie gesagt das Using unternimmt. Das kommt daher das der Stream IDisposible implementiert (du kannst nur Objekte mit IDisposible "usen") und dort die Dispose alle Ressourcen freigibt. Using ruft die am Ende auf.

    DniBo schrieb:


    VB.NET-Quellcode

    1. If IO.File.Exists(strFileName) Then
    2. 'File einlesen
    3. xDocEng = XDocument.Load(strEngCacheFile)
    4. .
    5. .
    6. .
    7. end if
    Nach dem bearbeiten speichere ich das ganze über "xDocEng.Save(strFileName)"
    Nanach möchte ich das File kopieren, aber dann bekomme ich den IOException das die Datei belegt ist.
    Bei mir verhält XDocument sich nicht so.
    Also liegts woanners dran.