可以查看附件,或則使用以下代碼。應(yīng)該注釋的滿全了。
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、椒江ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的椒江網(wǎng)站制作公司
隨便建一個窗口工程,窗口代碼帖入以下代碼。
Imports?System.IO
Imports?System.Text
Imports?System.Reflection
Public?Class?Form1
Const?ResName?As?String?=?"123.txt"?'?需要保存的資源名
Const?BufferSize?As?Integer?=?4096??'?復(fù)制時緩沖的大小
Private?Sub?Demo()
'?變量聲明
Dim?strDisplayText?As?StringBuilder?'?保存輸出信息
Dim?strResName?As?String????????????'?保存目標(biāo)資源的名稱
'?變量初始化
strDisplayText?=?New?StringBuilder()
strResName?=?String.Empty
'?獲取所有資源
strDisplayText.AppendLine("文件中存在以下資源:")
For?Each?strName?As?String?In?Assembly.GetExecutingAssembly.GetManifestResourceNames()
strDisplayText.AppendLine("??"??strName)
'?獲得目標(biāo)資源的全名
If?strName.EndsWith("."??ResName)?Then
strResName?=?strName
End?If
Next
'?目標(biāo)資源不存在
strDisplayText.AppendLine()
If?strResName?=?String.Empty?Then
strDisplayText.AppendLine("抱歉,沒有找名為"""??ResName??"""的資源")
Else?'?復(fù)制資源的代碼
'?打開資源文件,在End?Using的時候自動關(guān)閉。
Using?ms?As?UnmanagedMemoryStream?=?Assembly.GetExecutingAssembly.GetManifestResourceStream(strResName)
'?打開磁盤文件,在End?Using的時候自動關(guān)閉。
Using?fs?As?New?FileStream("C:\"??ResName,?FileMode.Create)
'?變量聲明
Dim?Buffer(BufferSize?-?1)?As?Byte??'?復(fù)制文件時的緩沖數(shù)組
Dim?ReadCount?As?Integer????????????'?此次讀取數(shù)據(jù)的數(shù)量
'?還有數(shù)據(jù)可以讀取的情況,一直循環(huán)
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("文件已經(jīng)復(fù)制完畢。")
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循環(huán)在files里查找文件對象,但是f變量聲明為string了,無法讓它獲取對象;
然后file.copy的變量file沒有任何聲明,也沒有初始化賦值等;
最后,整個for each循環(huán)里查找集合files的文件,由于初始化的循環(huán)計(jì)數(shù)器仍然按照最初設(shè)定的文件數(shù)目向后遞增(文件地址),但是實(shí)際文件刪除一部分,后續(xù)的文件位置就不能跟循環(huán)計(jì)數(shù)指針匹配了,所以默認(rèn)為查找不到文件,將會報(bào)錯。一般的做法時把復(fù)制和刪除分別放在2次循環(huán)里,第一次只復(fù)制文件,第二次才去刪除。
例如,把文件"E:\新建文件夾\a.txt"復(fù)制到剪貼板
CreateObject("Shell.Application").NameSpace("E:\新建文件夾").ParseName("a.txt").InvokeVerb?"復(fù)制(C)"
用API函數(shù) SHFileOperation的方法。
以下是使用SHFileOperation刪除復(fù)制移動文件的例子,可以復(fù)制文件夾
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 常數(shù)
'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 常數(shù)
'FOF_ALLOWUNDO 允許 Undo 。
Const FOF_ALLOWUNDO = H40
'FOF_NOCONFIRMATION 不顯示系統(tǒng)確認(rèn)對話框。
Const FOF_NOCONFIRMATION = H10
'FOF_NOCONFIRMMKDIR 不提示是否新建目錄。
Const FOF_NOCONFIRMMKDIR = H200
'FOF_SILENT 不顯示進(jìn)度對話框
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)
第一步,點(diǎn)擊VS工具
請點(diǎn)擊輸入圖片描述
第二步,打開后,新建一個Windows窗體應(yīng)用程序
請點(diǎn)擊輸入圖片描述
第三步,新建完畢后,如圖所示
請點(diǎn)擊輸入圖片描述
第四步,拖動文本框與按鈕,如圖示
請點(diǎn)擊輸入圖片描述
第五步,將剪貼板復(fù)制與粘貼代碼輸入,如圖示
請點(diǎn)擊輸入圖片描述
第六步,運(yùn)行程序
請點(diǎn)擊輸入圖片描述
7
第七步,點(diǎn)擊按鈕,成功從剪貼板中復(fù)制與粘貼操作
請點(diǎn)擊輸入圖片描述