@H_502_2@
我正在研究一个VB.NET程序,它会自动将我的工作备份到我的FTP服务器上.到目前为止,我可以通过使用以下方法指定文件名来上传单个文件:
'relevant part - above is where FTP object is instantiated Dim _FileStream As System.IO.FileStream = _FileInfo.OpenRead() Try 'Stream to which the file to be upload is written Dim _Stream As System.IO.Stream = _FtpWebRequest.GetRequestStream() 'Read from the file stream 2kb at a time Dim contentLen As Integer = _FileStream.Read(buff,buffLength) 'Till Stream content ends do while contentLen <> 0 ' Write Content from the file stream to the FTP Upload Stream _Stream.Write(buff,contentLen) contentLen = _FileStream.Read(buff,buffLength) Loop _Stream.Close() _Stream.dispose() _FileStream.Close() _FileStream.dispose() ' Close the file stream and the Request Stream Catch ex As Exception MessageBox.Show(ex.Message,"Upload Error",MessageBoxButtons.OK,MessageBoxIcon.Error) End Try
现在我希望能够遍历目录(包含子目录)并递归调用上面的函数.我在获取目录中的文件时遇到问题.
我的问题是,我如何循环并将每个文件发送到上面的上传功能?我可以将文件名发送到数组,还是有某种系统对象来处理这个(例如System.IO.Directory)
我正在尝试做的伪代码
For Each Sub_directory In Source_directory For Each File in Directory 'call the above code to transfer the file Next 'start next subdirectory Next
我正在尝试复制整个目录结构,子目录完好无损.我的第一次尝试将所有文件转储到一个目录中.
@H_502_2@解决方法
您可以使用递归遍历每个目录和文件,如下所示:
Public Shared Sub ForEachFileAndFolder(ByVal sourceFolder As String,_ ByVal directoryCallBack As Action(Of DirectoryInfo),_ ByVal fileCallBack As Action(Of FileInfo)) If Directory.Exists(sourceFolder) Then Try For Each foldername As String In Directory.GetDirectories(sourceFolder) If directoryCallBack IsNot nothing Then directoryCallBack.Invoke(New DirectoryInfo(foldername)) End If ForEachFileAndFolder(foldername,directoryCallBack,fileCallBack) Next Catch ex As UnauthorizedAccessException Trace.TraceWarning(ex.Message) End Try If fileCallBack IsNot nothing For Each filename As String In Directory.GetFiles(sourceFolder) fileCallBack.Invoke(New FileInfo(filename)) Next End If End If End Sub
编辑:代表的用法:
ForEachFileAndFolder("yourPath",AddressOf dirAction,Addressof fileAction) Public Sub dirAction(Byval dirInfo As DirectoryInfo) ' do something here ' End Sub
FileAction也是如此.
@H_502_2@ @H_502_2@@H_502_2@
@H_502_2@
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。