0

我的想法是通过封装 StreamReader 和 StreamWriter 类让我的生活更轻松,这里的目标是让这个类提供静态方法,我可以调用这些方法来从文件中写入和读取,而不必实例化 StreamWriter/Reader 类型的对象等等。

到目前为止,我的班级有以下代码:

Option Strict On

    Imports System.IO
    Imports System.IO.StreamReader 
    Imports System.IO.StreamWriter 



    Public Class ReadWrite
        Enum WriteType
            Append = 0
            WriteLine = 1
            Write = 2
        End Enum

        Enum ReadType
            Readline = 0
            Read = 1
        End Enum


        Shared Function Write (ByVal FilePath As String, ByVal _WriteType As WriteType, ByVal Content As String) As Boolean 

             Select Case _WriteType
                Case WriteType.Append
                    Using _append As StreamWriter = New StreamWriter(FilePath,True)
                        _append.WriteLine (Content)
                    End Using
                Case WriteType.Write 
                    Using _write As StreamWriter = New StreamWriter(FilePath, False)
                        _write.Write (Content)
                    End Using
                Case WriteType.WriteLine 
                      Using _writeline As StreamWriter = New StreamWriter(FilePath, False)
                        _writeline.Writeline (Content)
                    End Using
             End Select

            Return false
        End Function

         Shared Function Read (ByVal FilePath As String, ByVal _ReadType As ReadType) As Boolean 

             Select Case _ReadType
                Case ReadType.ReadLine
                Case ReadType.Read 
             End Select

            Return false
        End Function
    End Class

问题: 这是完成此类任务的好方法吗?我可以使用哪些技术来产生良好的结果,同时保持代码的可重用性和简单性;我的目标是让它足够灵活,以便在其他应用程序中轻松使用。

谢谢!

4

2 回答 2

2

该类已经为您提供了大部分功能System.IO.File

于 2012-08-11T11:48:07.967 回答
1

一般来说,编写小辅助方法以使您的生活更轻松并没有错。但不幸的是,你选择了一个非常糟糕的例子。

这里出现的问题是您为读取或写入文件的每一点数据打开和关闭文件。打开文件是一项昂贵的操作,在最常见的硬件上花费大约 50 毫秒。而且它非常容易发生随机故障,通过关闭一个文件,您可以让另一个进程有机会打开该文件。这很可能会将您锁定,您的下一次读/写很容易因“拒绝访问”异常而失败。无法调试,因为它是如此随机并且由您看不到的另一个进程引起。

一个简单的解决方法是为辅助方法提供 TextReader 或 TextWriter 的参数类型,而不是字符串。或者通过利用扩展方法。

于 2012-08-11T13:29:48.320 回答