VB.NET-使用类进一步封装StreamWriter/Reader;实现这一目标的最有效方法是什么?

VB.NET-使用类进一步封装StreamWriter/Reader;实现这一目标的最有效方法是什么?,vb.net,Vb.net,我的想法是通过封装StreamReader和StreamWriter类来让我的生活更轻松,这里的目标是让这个类提供静态方法,我可以调用这些方法来写入和读取文件,而无需实例化StreamWriter/Reader等类型的对象 到目前为止,我的类有以下代码: Option Strict On Imports System.IO Imports System.IO.StreamReader Imports System.IO.StreamWriter Pub

我的想法是通过封装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
问题: 这是完成这项任务的好方法吗?我可以使用哪些技术在保持代码可重用性和简单性的同时产生良好的效果;我的目标是使其足够灵活,以便在其他应用程序中轻松使用


谢谢大家!

此功能的大部分已经通过
System.IO.File
类提供给您:


此功能的大部分已经通过
System.IO.File
类为您提供:


    • 通常,编写小助手方法来简化您的生活并没有什么错。但不幸的是,你选择了一个非常糟糕的例子

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


      一个简单的解决方法是为helper方法提供一个参数类型TextReader或TextWriter,而不是string。或者利用扩展方法。

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

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


      一个简单的解决方法是为helper方法提供一个参数类型TextReader或TextWriter,而不是string。或者利用扩展方法。

      我认为这会进一步限制您。例如如果您想在一个循环中写入多行,这将如何工作?您将打开一个文件句柄,写入流并关闭。。每一次迭代..@SimonWhitehead您都有一个很好的观点,我可以尝试解决这个问题。我没有想到这一点,主要是因为我正在开发的当前应用程序不需要我在一个循环中编写多行代码…但您的目标是代码重用。。你不应该考虑你当前的项目。。你应该考虑任何项目:)我可能会追求一个流畅的界面。。你可以包含循环或类似的委托。在我看来,这样的类只会使思考复杂化,只需按原样使用流编写器/读取器。我认为这会进一步限制你。例如如果您想在一个循环中写入多行,这将如何工作?您将打开一个文件句柄,写入流并关闭。。每一次迭代..@SimonWhitehead您都有一个很好的观点,我可以尝试解决这个问题。我没有想到这一点,主要是因为我正在开发的当前应用程序不需要我在一个循环中编写多行代码…但您的目标是代码重用。。你不应该考虑你当前的项目。。你应该考虑任何项目:)我可能会追求一个流畅的界面。。你可以包括循环或类似的代理。在我看来,像这样的类只会使思考复杂化,只需按原样使用流编写器/读取器。谢谢你提供的详细答案!!扩展方法到底是什么??当你提到文本阅读器/文本书写器时,你指的是通过引用传递某个对象?谷歌“vb.net扩展方法”并首当其冲。不,TextReader已经是一种引用类型,使用ByRef没有任何意义,因为您的方法实际上并没有改变阅读器。关于vb.net编程,有很多不错的书籍,你应该在本地的库中挑选一本来进入下一个层次。“扩展方法使开发人员能够向已经定义的数据类型添加自定义功能,而无需创建新的派生类型。”-这是很好的东西,谢谢你提供的信息,我将进一步研究这一点,并从这里开始+1感谢您的详细回答!!扩展方法到底是什么??当你提到文本阅读器/文本书写器时,你指的是通过引用传递某个对象?谷歌“vb.net扩展方法”并首当其冲。不,TextReader已经是一种引用类型,使用ByRef没有任何意义,因为您的方法实际上并没有改变阅读器。关于vb.net编程,有很多不错的书籍,你应该在本地的库中挑选一本来进入下一个层次。“扩展方法使开发人员能够向已经定义的数据类型添加自定义功能,而无需创建新的派生类型。”-这是很好的东西,谢谢你提供的信息,我将进一步研究这一点,并从这里开始+1.