笔记3:FileWebRequest 与 FileWebResponse


FileWebRequest 及 FileWebResponse这两个类衍生自 WebRequest 及 WebResponse,用以存取本机文件数据。

把本机路径“看作”URL,来初始化建立对象。

 

一、建立类实体

           同样没有构造函数,必须引用类WebRequest的方法成员Create(),建立所需的FileWebRequest类实体,WebRequest根据传入的URI字符串,返回一个FileWebRequest对象。下面strAddress为本机所要存取的某个文件完整路径名称。

 

      Dim myFileWebRequestAs FileWebRequest = CType(WebRequest.Create(strAddress),FileWebRequest)

      FileWebRequest继承WebRequest类的方法成员,还有自身方法成员。

          FileWebResponse 对象,同样必须由 FileWebRequest 的 GetResponse()方法,返回所取得的类对象。

 

 

二、文件存取

          用特定文件URI初始化的HleWebRequest实体,取得返回的FileWebResponse对象,就可以进行文件存取操作。

 

         读取文件

             与下载网页的过程非常类似,把本机上的文件当作“服务器”。

         写入文件

             利用FileWebRequest对象发出请求,由其传回连接目标文件所需的数据流;通过这个数据流,将数据被写入新建立的数据流,最后保存到指定的目标文件。返回数据流的方法则是通过引用GetRequestStream()方法来完成:

 

           Public FunctionGetRequestStream() As Stream

          结果返回文件数据流对象,它可直接通过文件I/O的模式,引用Write()方法,将字节数据写入目标文件。

 

 

三、读写文件举例

          FileWebRequest 及 FileWebResponse 类的使用,与WebRequest 与 WebResponse 相似。

         下面对本机D盘文件进行读取与写入操作。

                                       笔记3:FileWebRequest 与 FileWebResponse_第1张图片       

                       笔记3:FileWebRequest 与 FileWebResponse_第2张图片     


Imports System.Net
Imports System.IO
Imports System.Text

Public Class Form1
    Private Sub btnRead_Click(sender As Object, e As EventArgs) Handles btnRead.Click
        Dim fq As FileWebRequest
        Dim fp As FileWebResponse
        Dim st As Stream
        Dim sr As StreamReader

        Try
            fq = CType(WebRequest.Create(txtAddress.Text), FileWebRequest) '创建filewebrequest
            fp = fq.GetResponse
            st = fp.GetResponseStream '响应流,即读取流

            sr = New StreamReader(st, Encoding.Default)
            txtContent.Text = sr.ReadToEnd

            st.Close()
            sr.Close()
        Catch ex As Exception
            txtContent.Text = ex.Message
        End Try
    End Sub

    Private Sub btnWrite_Click(sender As Object, e As EventArgs) Handles btnWrite.Click
        Dim fq As FileWebRequest
        Dim st As Stream
        Dim a() As Byte
        Dim lngCount As Int64

        lngCount = Encoding.Default.GetBytes(txtContent.Text).Count
        ReDim a(lngCount)
        a = Encoding.Default.GetBytes(txtContent.Text)
        Try
            fq = CType(WebRequest.Create(txtAddress.Text), FileWebRequest)
            fq.Method = "PUT"        '设置写入方式,默认(不设置)时是Get即读取

            st = fq.GetRequestStream '请求流(非响应流),故方向是向文件写入
            st.Write(a, 0, a.Length)

            st.Close()
            MsgBox("完成!")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class






总结:1、filewebrequest对本机文件的存取,感觉用处不大,何必绕个圈子做这事呢?

             2、流的方向,请求流与响应流




你可能感兴趣的:(网络编程,VB.NET,filewebrequest)