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盘文件进行读取与写入操作。
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,a.Length) st.Close() MsgBox("完成!") Catch ex As Exception MsgBox(ex.Message) End Try End Sub End Class
总结:1、filewebrequest对本机文件的存取,感觉用处不大,何必绕个圈子做这事呢?
2、流的方向,请求流与响应流