2013-08-21 225 views
0

我正在製作一個應用程序,它涉及讀取現有文件的塊並將它們寫入新的文件...現在,問題是我正在使用的代碼不會創建子文件夾,然後在給定完整路徑時創建文件...如何創建文件時創建子文件夾?

如果我給它一個這樣的路徑:C:\ folder1 \ folder2 \ file.mp3它給出了一個錯誤,因爲文件夾folder1和2不存在,但是,我希望它創建這些子文件夾如果在創建文件它們不存在...謝謝...這裏是我的代碼:

Dim bytesRead As Integer 
Dim buffer(40096) As Byte 

Using inFile As New System.IO.FileStream(arch, IO.FileMode.Open, IO.FileAccess.Read) 
    Using outFile As New System.IO.FileStream(path & "\" & f, IO.FileMode.Create, IO.FileAccess.Write) 
     inFile.Seek(StartAt, IO.SeekOrigin.Begin) 

     Do 
      If astop.Text = 1 = False Then 
       If CurrentFsize - currtotal < buffer.Length Then 
        ReDim buffer(CurrentFsize - currtotal) 
       End If 

       bytesRead = inFile.Read(buffer, 0, buffer.Length) 
       If bytesRead > 0 Then 
        outFile.Write(buffer, 0, bytesRead) 
        currtotal += bytesRead 



       End If 
      Else 
       Exit Do 
       Exit Do 

      End If 
      Application.DoEvents() 

     Loop While bytesRead > 0 AndAlso currtotal < CurrentFsize 
    End Using 
End Using 
+1

我假設你剛剛開始使用這段代碼:「如果astop.Text = 1 = False Then」就是假的。 – rheitzman

+0

是的,但astop在單擊取消時被用於第二種形式,並且在循環內檢查... –

+1

astop.Text = 1 = False實際上是astop.Text =(1 = False)。 (1 = False)總是False。 (1 = False)可能被VB轉換爲「False」,但它永遠不會是「True」 – rheitzman

回答

2

YOUT應該創建輸出文件之前創建的path的目錄和子目錄:

If(Not System.IO.Directory.Exists(path)) Then 
    System.IO.Directory.CreateDirectory(path) 
+0

嗯...我想我可以先創建它們,但是,我正在尋找最有效的方式來做這件事...程序可能與大量文件一起工作,所以即使幾毫秒的性能差異count ... –

+0

無論如何,您的程序必須創建這些文件夾,無論您使用什麼方法。在任何情況下,您的代碼都必須調用系統API的文件夾創建功能。所以你用任何其他方法都無法贏得比賽。 – ataman