Avatar billede webudvikleren Nybegynder
20. marts 2006 - 18:12 Der er 2 kommentarer og
1 løsning

The process cannot access the file

Hej, jeg sidder med et problem.
Jeg er ny indefor vb.net og vil lave en simpel "vis og skriv" til en fil-projekt.

Når jeg får outputtet ud og vil gemme filen får jeg følgende fejl:

The process cannot access the file 'D:\Documents and Settings\Ejer\Dokumenter\Modtagne filer\do.php' because it is being used by another process.

Hvad skal jeg gøre ved det problem?

Min kode ser i øjeblikket således ud:
Imports System.IO
Public Class Form1

    Private Sub aabenfil_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles aabenfil.Click

        If aaben.ShowDialog() = DialogResult.OK Then
            input.Text = aaben.FileName
        End If
    End Sub




    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim indhold As New StreamReader(input.Text)
        output.Text = indhold.ReadToEnd()

    End Sub




    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim skriv As StreamWriter = New StreamWriter(input.Text)
        skriv.WriteLine(output.Text)
        MsgBox("Filen " & input.Text & " er blevet gemt med de nye dataer")

    End Sub
End Class


På forhånd tak.
Avatar billede pidgeot Nybegynder
20. marts 2006 - 18:14 #1
Du skal huske at lukke filen når du er færdig med at læse fra den:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim indhold As New StreamReader(input.Text)
        output.Text = indhold.ReadToEnd()
        indhold.Close();
    End Sub
Avatar billede webudvikleren Nybegynder
20. marts 2006 - 18:15 #2
Okay tak for det. Havde også en idé om det, men kunne ikke lige få den rigtigt ud :-)

Tak for det.
Avatar billede jens_klinting Nybegynder
22. marts 2006 - 18:09 #3
Lige en kommentar til det med at lukke filer og frigive ressourcer.

Stream'en indhold skal også lukkes, hvis der evt. opstår exceptions. Så koden skal hellere se ud som følger:

Dim indhold As System.IO.StreamReader = Nothing
Try
  indhold = New System.IO.StreamReader(input.Text)
  output.Text = indhold.ReadToEnd()
Finally
  If (Not indhold Is Nothing) Then
    indhold.Close()
  End If
End Try

I .NET 2.0 er der i VB.NET også kommet mulighed for at lave Using statements (som man havde i C# i .NET 1.1). Med Using ser koden således ud:

Using indhold As New System.IO.StreamReader(input.Text)
  output.Text = indhold.ReadToEnd()
End Using

Hvilket jo er noget pænere.

// Jens
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester