這段代碼的問(wèn)題是:
創(chuàng)新互聯(lián)公司專(zhuān)注于尼開(kāi)遠(yuǎn)企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),商城建設(shè)。尼開(kāi)遠(yuǎn)網(wǎng)站建設(shè)公司,為尼開(kāi)遠(yuǎn)等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
首先f(wàn)or each循環(huán)在files里查找文件對(duì)象,但是f變量聲明為string了,無(wú)法讓它獲取對(duì)象;
然后file.copy的變量file沒(méi)有任何聲明,也沒(méi)有初始化賦值等;
最后,整個(gè)for each循環(huán)里查找集合files的文件,由于初始化的循環(huán)計(jì)數(shù)器仍然按照最初設(shè)定的文件數(shù)目向后遞增(文件地址),但是實(shí)際文件刪除一部分,后續(xù)的文件位置就不能跟循環(huán)計(jì)數(shù)指針匹配了,所以默認(rèn)為查找不到文件,將會(huì)報(bào)錯(cuò)。一般的做法時(shí)把復(fù)制和刪除分別放在2次循環(huán)里,第一次只復(fù)制文件,第二次才去刪除。
可以查看附件,或則使用以下代碼。應(yīng)該注釋的滿全了。
隨便建一個(gè)窗口工程,窗口代碼帖入以下代碼。
Imports?System.IO
Imports?System.Text
Imports?System.Reflection
Public?Class?Form1
Const?ResName?As?String?=?"123.txt"?'?需要保存的資源名
Const?BufferSize?As?Integer?=?4096??'?復(fù)制時(shí)緩沖的大小
Private?Sub?Demo()
'?變量聲明
Dim?strDisplayText?As?StringBuilder?'?保存輸出信息
Dim?strResName?As?String????????????'?保存目標(biāo)資源的名稱(chēng)
'?變量初始化
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("抱歉,沒(méi)有找名為"""??ResName??"""的資源")
Else?'?復(fù)制資源的代碼
'?打開(kāi)資源文件,在End?Using的時(shí)候自動(dòng)關(guān)閉。
Using?ms?As?UnmanagedMemoryStream?=?Assembly.GetExecutingAssembly.GetManifestResourceStream(strResName)
'?打開(kāi)磁盤(pán)文件,在End?Using的時(shí)候自動(dòng)關(guān)閉。
Using?fs?As?New?FileStream("C:\"??ResName,?FileMode.Create)
'?變量聲明
Dim?Buffer(BufferSize?-?1)?As?Byte??'?復(fù)制文件時(shí)的緩沖數(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)?'?寫(xiě)入到磁盤(pán)文件
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
例如,把文件"E:\新建文件夾\a.txt"復(fù)制到剪貼板
CreateObject("Shell.Application").NameSpace("E:\新建文件夾").ParseName("a.txt").InvokeVerb?"復(fù)制(C)"
用 io.Directory.Exists 判斷文件夾是否存在。
再用 My.Computer.FileSystem.CopyDirectory() 復(fù)制。