2014-02-06 6 views
0

텍스트 파일에 저장할 필드가있는 양식이 있습니다. 같은 양식에 파일에 쓰는 중 이미 파일을 쓰는 중 오류가 발생했습니다.

난 당신이 내가 그것을이 데이터 그리드에 TEXTFILE 및 디스플레이를 읽 버튼을 누르면 때 해당 텍스트 파일

의 사전 저장된 것을 볼 수있는 버튼이 있습니다.

이 코드는 데이터 그리드에 표시되는 것입니다

Dim reader As StreamReader 
    reader = New StreamReader("C:\Users\John\Desktop\tickets.txt") 
    Dim a As String 
    Dim results() As String 
    Do 
     a = reader.ReadLine 
     results = a.Split(vbTab) 
     dgv.Rows.Add(results(0), results(1), results(2), results(3), results(4), results(5)) 
     ' Code here 
     ' 
    Loop Until a Is Nothing 

    reader.Close() 
    reader.Dispose() 

이 코드는 내가 레코드가 먼저 나는 중 오류가 계속 그들을 저장하려고 읽을 파일

Dim file As StreamWriter 
    file = New StreamWriter("C:\Users\John\Desktop\tickets.txt", True) 
    file.WriteLine(txtname.Text & vbTab & dtdate.Text & vbTab & txttime.Text & vbTab & txtwho.Text & vbTab & txtproblem.Text & vbTab & txtresolution.Text) 
    file.Close() 

에 저장 프로세스는 다른 프로세스에서 사용 중이기 때문에 파일에 액세스 할 수 없습니다.

나는 확실 루프가 종료되었다되어, 독자와 작가 모두를 폐쇄하고,이

+0

Word에서 파일을 열고 있었나요? 이 오류가 발생합니다. – xpda

+0

아무 것도 열려있는 파일이 없습니다 – user867621

답변

1

더 나은 코드를 happeneing 왜 확실하지 않다?

쓰기 :

Dim path As String = "C:\Users\John\Desktop\tickets.txt" 
If File.Exists(path) Then 
Using sw As New StreamWriter(path, True) 
    'code 
End Using' closes and disposes for you 
End If 

읽기 :

Dim path As String = "C:\Users\John\Desktop\tickets.txt" 
If File.Exists(path) Then 
Dim results As New List(Of String) 
Using sr As New StreamReader(path) 
    While Not sr.EndOfStream() 
    results.Add(sr.Readline()) 
    'better than do loop 
    End While 
End Using' closes and disposes for you 
End If 

For Each line In results 
    'add to DGV 
Next 
+0

고마워요, 루프가 끝나지 않았을 것 같아요;) – user867621

+0

다른 코드 보호 기능을 추가했습니다! – OneFineDay

+0

부울을 설정하여 파일이 한 번 존재하는지 확인한 다음 필요하면 바로 사용할 수 있습니다. 중복성은 때때로 문제가 될 수 있습니다. – Codexer

관련 문제