在Visual Basic中,支持通过经典过程(FileOpen, Input, Put, Close)和**.NET API**(System.IO.StreamReader, StreamWriter, FileStream)处理文件。推荐使用.NET类。
细节:
Using结构,以自动释放资源。StreamReader/StreamWriter,对于字节使用FileStream。代码示例:
Dim filePath As String = "test.txt" ' 写入文件 Using writer As New StreamWriter(filePath) writer.WriteLine("Hello, world!") End Using ' 从文件读取 Using reader As New StreamReader(filePath) Dim content As String = reader.ReadToEnd() End Using
如果不在通过StreamWriter写入文件后关闭流,会发生什么,为什么使用Using结构很重要?
答案:
如果不关闭流(不调用Close或不使用Using),缓冲的数据可能不会写入磁盘,因为操作系统会将其保存在内存中。此外,未关闭的流会占用文件描述符,这样文件可能会被其他进程锁定,而在长期运行的应用程序中,这会导致内存和资源泄漏。Using结构保证即使发生异常也会调用Dispose。
故事
数据的突然丢失: 在银行生成报告时,开发人员没有关闭
StreamWriter。结果,部分数据因未释放的缓冲区而未写入文件,客户服务部门无法打开最终报告。
故事
文件描述符泄漏: 在ERP系统中,开发人员使用手动打开文件,并常常忘记调用
Close。几天后,应用程序因打开的文件数量达到上限而崩溃。
故事
文件锁定冲突: 在网络备份服务中,文件以不正确的访问模式打开,这导致其他程序无法访问,导致整个部门长时间停工。