2014-02-06 74 views
0

我有一個表格,我保存到文本文件中。錯誤說當寫入文件時文件已經打開

基於同樣的形式我有一個按鈕,允許您查看您從文本文件

之前什麼保存時,我打它讀取數據網格的文本文件,並顯示該按鈕。

這段代碼是什麼顯示到DataGrid

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() 

當我讀到記錄第一再試圖挽救他們,我不斷收到錯誤的進程無法訪問該文件,因爲它正在被另一個進程使用。

我都收了讀者和作家,這是爲什麼happeneing

+0

你在Word中打開該文件?這會導致這個錯誤。 – xpda

+0

nope沒有文件打開 – user867621

回答

1

更好的代碼,我不知道,你確定你的循環即將結束?

寫:

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