重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以查看附件,或则使用以下代码。应该注释的满全了。
我们提供的服务有:网站设计、网站制作、微信公众号开发、网站优化、网站认证、椒江ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的椒江网站制作公司
随便建一个窗口工程,窗口代码帖入以下代码。
Imports System.IO
Imports System.Text
Imports System.Reflection
Public Class Form1
Const ResName As String = "123.txt" ' 需要保存的资源名
Const BufferSize As Integer = 4096 ' 复制时缓冲的大小
Private Sub Demo()
' 变量声明
Dim strDisplayText As StringBuilder ' 保存输出信息
Dim strResName As String ' 保存目标资源的名称
' 变量初始化
strDisplayText = New StringBuilder()
strResName = String.Empty
' 获取所有资源
strDisplayText.AppendLine("文件中存在以下资源:")
For Each strName As String In Assembly.GetExecutingAssembly.GetManifestResourceNames()
strDisplayText.AppendLine(" " strName)
' 获得目标资源的全名
If strName.EndsWith("." ResName) Then
strResName = strName
End If
Next
' 目标资源不存在
strDisplayText.AppendLine()
If strResName = String.Empty Then
strDisplayText.AppendLine("抱歉,没有找名为""" ResName """的资源")
Else ' 复制资源的代码
' 打开资源文件,在End Using的时候自动关闭。
Using ms As UnmanagedMemoryStream = Assembly.GetExecutingAssembly.GetManifestResourceStream(strResName)
' 打开磁盘文件,在End Using的时候自动关闭。
Using fs As New FileStream("C:\" ResName, FileMode.Create)
' 变量声明
Dim Buffer(BufferSize - 1) As Byte ' 复制文件时的缓冲数组
Dim ReadCount As Integer ' 此次读取数据的数量
' 还有数据可以读取的情况,一直循环
ReadCount = ms.Read(Buffer, 0, BufferSize)
While ReadCount 0
fs.Write(Buffer, 0, ReadCount) ' 写入到磁盘文件
ReadCount = ms.Read(Buffer, 0, BufferSize)
End While
End Using
End Using
strDisplayText.AppendLine("文件已经复制完毕。")
End If
' 显示消息
MessageBox.Show(strDisplayText.ToString())
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call Demo()
End
End Sub
End Class
'这是VB的要先引用Microsoft Scripting RunTime,下面的例子是找叫cmd.xxx的文件的
Private Sub Command1_Click()
Dim m_objFSO As New FileSystemObject
Dim objFolder As Scripting.Folder '文件夹对象
Dim objFile As Scripting.File '文件对象
Set objFolder = m_objFSO.GetFolder("c:/test")
For Each objFile In objFolder.Files
Dim filenames() As String
filenames = Split(objFile.Name, ".")
If filenames(0) = "cmd" Then
FileCopy objFile.Path, "c:/TestCMD/" "newName." filenames(1)
End If
Next objFile
End Sub
-----------------------------------这是VB.net的--------------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim files() As String
files = System.IO.Directory.GetFiles("C:/test")
For i = 0 To files.Length - 1
Dim filenames() As String
filenames = files(i).Substring(files(i).LastIndexOf("\") + 1).Split(".")
If filenames(0) = "cmd" Then
FileCopy(files(i), "c:/TestCMD/" "newName." filenames(1))
End If
Next
End Sub
这段代码的问题是:
首先for each循环在files里查找文件对象,但是f变量声明为string了,无法让它获取对象;
然后file.copy的变量file没有任何声明,也没有初始化赋值等;
最后,整个for each循环里查找集合files的文件,由于初始化的循环计数器仍然按照最初设定的文件数目向后递增(文件地址),但是实际文件删除一部分,后续的文件位置就不能跟循环计数指针匹配了,所以默认为查找不到文件,将会报错。一般的做法时把复制和删除分别放在2次循环里,第一次只复制文件,第二次才去删除。
例如,把文件"E:\新建文件夹\a.txt"复制到剪贴板
CreateObject("Shell.Application").NameSpace("E:\新建文件夹").ParseName("a.txt").InvokeVerb "复制(C)"
用API函数 SHFileOperation的方法。
以下是使用SHFileOperation删除复制移动文件的例子,可以复制文件夹
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String '只有在 FOF_SIMPLEPROGRESS 时用
End Type
Private Declare Function SHFileOperation Lib _
"shell32.dll" Alias "SHFileOperationA" (lpFileOp _
As SHFILEOPSTRUCT) As Long
'wFunc 常数
'FO_COPY 把 pFrom 文件拷贝到 pTo。
Const FO_COPY = H2
'FO_DELETE 删除 pFrom 中的文件(pTo 忽略)。
Const FO_DELETE = H3
'FO_MOVE 把 pFrom 文件移动到 pTo。
Const FO_MOVE = H1
'fFlag 常数
'FOF_ALLOWUNDO 允许 Undo 。
Const FOF_ALLOWUNDO = H40
'FOF_NOCONFIRMATION 不显示系统确认对话框。
Const FOF_NOCONFIRMATION = H10
'FOF_NOCONFIRMMKDIR 不提示是否新建目录。
Const FOF_NOCONFIRMMKDIR = H200
'FOF_SILENT 不显示进度对话框
Const FOF_SILENT = H4
Private Sub Command1_Click()
'例子:
Dim SHFileOp As SHFILEOPSTRUCT
' 拷贝
SHFileOp.wFunc = FO_COPY
SHFileOp.pFrom = "d:\MASM611"
SHFileOp.pTo = "c:\MASM611"
SHFileOp.fFlags = FOF_NOCONFIRMMKDIR
Call SHFileOperation(SHFileOp)
End Sub
或者用命令行
shell "cmd.exe /c xcopy "+chr(34)+"C:\新建文件夹 c:\aa /q /e" +chr(34)
第一步,点击VS工具
请点击输入图片描述
第二步,打开后,新建一个Windows窗体应用程序
请点击输入图片描述
第三步,新建完毕后,如图所示
请点击输入图片描述
第四步,拖动文本框与按钮,如图示
请点击输入图片描述
第五步,将剪贴板复制与粘贴代码输入,如图示
请点击输入图片描述
第六步,运行程序
请点击输入图片描述
7
第七步,点击按钮,成功从剪贴板中复制与粘贴操作
请点击输入图片描述