2013-05-25 10 views
-1

只要有對一些VB網功能的幾個非常簡單的問題,這是不明確的MSDN:文件I/O功能,VB網

  1. 當您使用的FileOpen的功能,例如

    fileopen(1,Path of file,openmode.binary) 
    

    ,請問openmode.binary實際上當文本文件是要打開的文件 工作?每個字符是否以二進制形式使用?

  2. 當您使用文件集函數;

    fileget(1,variablename) 
    

    ,變量類型是否依賴於從文件讀取的內容?因此,如果 variablename被聲明爲char,那麼fileget函​​數 是否會從文件中讀取字符?

  3. 是用來簡單地提高高效化FILECLOSE功能? EG如果 沒有關閉會類似於無限循環?

+4

您需要忘記這些功能存在。它們是爲了幫助程序員將他的VB6程序移植到.NET上,如果你不必這樣做,它們就不適合使用。 –

回答

1
  1. 它不,你不應該這樣做。如果你有一個文本文件,你應該以文本模式打開它,而不是二進制模式。二進制模式用於讀取以二進制模式寫出的文件。

  2. 是的,但是根據您最初將數據寫入文件的方式,您需要正確匹配數據類型。如果你弄錯了,所有的投注都關閉。這裏沒有自動化功能。

  3. 不,您不關閉文件以提高效率,因爲您完成了使用而關閉它。不關閉該文件會導致資源泄漏。在應用程序關閉之前,文件不會關閉,操作系統會自動釋放它。我想你可能會認爲泄漏資源是低效的,但我不認爲這就是你的意思。這不像是一個無限循環。該應用程序保持運行,該文件無法打開或讀取其他任何東西,因爲你有一個鎖。

但是,像其他人已經表示,你真的需要放棄對這些舊的,過時的功能。他們從BASIC編程語言的最早和最黑暗的日子開始歡呼。你曾經這樣做,但謝天謝地,我們現在不再。它們存在於VB.NET中的唯一原因是讓它更容易移植舊的VB 6應用程序。即使您正在做的是,您的移植工作的一部分應該涉及切換到由System.IO命名空間提供的功能。這不僅僅是爲了成爲慣用的或者爲了它而使用最新和最偉大的東西,而是爲了節省自己大量額外的工作和痛苦。

3

NET框架有一個叫System.IO充分的方法來讀取和寫入文件(文本或二進制)

此示例taken from MSDN是你如何閱讀與VB.NET

一個文本文件的示例名稱空間
Public Shared Sub Main() 
    Try 
     Using sr As New StreamReader("TestFile.txt") 
      Dim line As String 
      line = sr.ReadToEnd() 
      Console.WriteLine(line) 
     End Using 
    Catch e As Exception 
     Console.WriteLine("The file could not be read:") 
     Console.WriteLine(e.Message) 
    End Try 
End Sub 

這裏fileopen函數被替換爲StreamReader的構造函數。 Fileget由StreamReader的ReadToEnd(或ReadLineReadBlock)方法替換,而文件的關閉由End Using istruction取代,End Exection關閉並銷燬由初始Using創建的StreamReader對象。

我建議閱讀MSDN上的這篇文章:Common I/O tasks

+0

感謝您的輸入,我知道使用streamreaders和streamwriters,但我只是需要一些輸入我說的功能。 – Vandib

+2

我很抱歉,您應該將這些功能放在後面,並使用專門爲NET設計的功能。 – Steve