FTP问题,请帮忙解释下该代码的意义

wx9288 2017-05-16 03:48:30
一个FTP上传代码的例子。其中有3句不太理解,请高手指教下,谢谢
【Dim byt(1024) As Byte】 【intCount = fs.Read(byt, 0, 1024 + 1) 】 【 st.Write(byt, 0, intCount) 】


imports System.Net
Imports System.IO
Public Class Form1
Private Sub btnFtp_Click(sender As Object, e As EventArgs) Handles btnFtp.Click
Dim frq As FtpWebRequest, frp As FtpWebResponse
Dim st As Stream, fs As FileStream
Dim byt(1024) As Byte, intCount As Integer ‘’‘’‘’‘’ 这里 byt(1024) 有啥意思,可以调大吗? 起到什么作用
如果我上传文件3M多,是不是这里也要改?

Try
frq = CType(WebRequest.Create(txtFtp.Text), FtpWebRequest)
frq.Credentials = New NetworkCredential(txtUser.Text, txtPassword.Text)
frq.Method = WebRequestMethods.Ftp.UploadFile
frq.KeepAlive = True

st = frq.GetRequestStream()
fs = New FileStream(txtFile.Text, FileMode.Open, FileAccess.Read)
Do While True
intCount = fs.Read(byt, 0, 1024 + 1) ;---请问这句是什么意思,BYT大小对其有啥影响
If intCount > 0 Then
st.Write(byt, 0, intCount) ;---请问这句是什么意思,BYT大小对其有啥影响
Else
Exit Do
End If
Loop
st.Close() '
fs.Close()
frp = CType(frq.GetResponse, FtpWebResponse)
frp.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
MsgBox("完成!")
End Sub
End Class




...全文
173 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wx9288 2017-05-18
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
你就算是写
 
            Do While True
                intCount = fs.Read(byt, 0, 1)       ;---请问这句是什么意思,BYT大小对其有啥影响
                If intCount > 0 Then
                    st.Write(byt, 0, intCount)                       ;---请问这句是什么意思,BYT大小对其有啥影响        
                Else
                    Exit Do
                End If
            Loop
也是照样可以读写 3M 文件的,因为它是连续循环处理的。 缓冲区大小影响到读效率而已,足够大的缓冲区能提高效率,具体多大才能发挥最好性能又没有浪费,那是需要测试的。
谢谢以专业开发人员为伍大侠,明白了
  • 打赏
  • 举报
回复
不论你告诉 Stream.Read 使用1个字节、10K字节、10M字节,结果都是一样,都能连续读取数据。难道你没有画一个流程图吗?你的流程图中怎么表示的 while 操作?
  • 打赏
  • 举报
回复
你就算是写
 
            Do While True
                intCount = fs.Read(byt, 0, 1)       ;---请问这句是什么意思,BYT大小对其有啥影响
                If intCount > 0 Then
                    st.Write(byt, 0, intCount)                       ;---请问这句是什么意思,BYT大小对其有啥影响        
                Else
                    Exit Do
                End If
            Loop
也是照样可以读写 3M 文件的,因为它是连续循环处理的。 缓冲区大小影响到读效率而已,足够大的缓冲区能提高效率,具体多大才能发挥最好性能又没有浪费,那是需要测试的。
wx9288 2017-05-18
  • 打赏
  • 举报
回复
引用 2 楼 zeratul1990 的回复:
Do While True intCount = fs.Read(byt, 0, 1024 + 1) ;---请问这句是什么意思,BYT大小对其有啥影响 If intCount > 0 Then st.Write(byt, 0, intCount) ;---请问这句是什么意思,BYT大小对其有啥影响 Else Exit Do End If Loop 每次传BYT大小,传到结束为止
这是自己写的类似的代码 Dim frq As FtpWebRequest, frp As FtpWebResponse Dim st As Stream, fs As FileStream Dim byt(1024) As Byte, intCount As Integer Try frq = CType(WebRequest.Create(txtFtp.Text), FtpWebRequest) frq.Credentials = New NetworkCredential(txtUser.Text, txtPassword.Text) frq.Method = WebRequestMethods.Ftp.UploadFile frq.KeepAlive = True st = frq.GetRequestStream() fs = New FileStream(txtFile.Text, FileMode.Open, FileAccess.Read) Do While True intCount = fs.Read(byt, 0, 1024 + 1) '读文件流 If intCount > 0 Then st.Write(byt, 0, intCount) '写入请求流 Else Exit Do End If Loop st.Close() '========================1、特别重要:发出请求流前须必须关闭 fs.Close() '========================2、文件缓存原因,最好关闭 frp = CType(frq.GetResponse, FtpWebResponse) '=========3、 frp.Close() Catch ex As Exception MsgBox(ex.Message) End Try MsgBox("完成!") 发现byt() 无论调多少都能上传成功。是不是意味着BYT 跟文件大小无关?
wx9288 2017-05-18
  • 打赏
  • 举报
回复
引用 2 楼 zeratul1990 的回复:
Do While True intCount = fs.Read(byt, 0, 1024 + 1) ;---请问这句是什么意思,BYT大小对其有啥影响 If intCount > 0 Then st.Write(byt, 0, intCount) ;---请问这句是什么意思,BYT大小对其有啥影响 Else Exit Do End If Loop 每次传BYT大小,传到结束为止
请问一刀大侠,BYT大小是不是就是目标文件的大小 如果目标文件3M BYT 就必须调整为3M大小。否则上传不了是吗? 但是实际测试时候发现3M文件,BYT 调整为1M 依然继续可以。请问是怎么回事
xdashewan 2017-05-18
  • 打赏
  • 举报
回复
你的问题是没弄明白流(Stream)的概念,你不妨去看看书中有关流的介绍,或者网上查找下关于流的基础知识
拜一刀 2017-05-18
  • 打赏
  • 举报
回复
Do While True intCount = fs.Read(byt, 0, 1024 + 1) ;---请问这句是什么意思,BYT大小对其有啥影响 If intCount > 0 Then st.Write(byt, 0, intCount) ;---请问这句是什么意思,BYT大小对其有啥影响 Else Exit Do End If Loop 每次传BYT大小,传到结束为止
wx9288 2017-05-18
  • 打赏
  • 举报
回复
请高手指教下

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧