2008-09-17 38 views
42

Tôi đã tự viết một ứng dụng tải xuống để có thể dễ dàng lấy một tập hợp các tệp từ máy chủ của mình và đặt tất cả chúng lên một máy tính mới có cài đặt Windows sạch, mà không thực sự chạy trên mạng. Rất tiếc, tôi đang gặp sự cố khi tạo thư mục mà tôi muốn đặt chúng vào và không chắc chắn về cách thực hiện.Làm thế nào để tạo một thư mục trong VB nếu nó không tồn tại?

Tôi muốn chương trình của tôi để tải về các ứng dụng để program files\any name here\

Vì vậy, về cơ bản tôi cần một chức năng để kiểm tra nếu một thư mục tồn tại, và nếu nó không nó tạo ra nó.

+4

Xin lưu ý rằng bạn có thể gặp vấn đề về quyền ghi vào \ Program Files \, đặc biệt là trong Vista. Bạn nên xem xét một vị trí khác. –

Trả lời

132
If(Not System.IO.Directory.Exists(YourPath)) Then 
    System.IO.Directory.CreateDirectory(YourPath) 
End If 
+18

Đừng bận tâm kiểm tra xem nó có tồn tại hay không, nó chỉ lãng phí thời gian. CreateDirectory sẽ không ném ngoại lệ. Ngoài ra, ai đó có thể tạo thư mục giữa thời gian bạn đã chọn và thời gian bạn đã tạo, làm cho việc kiểm tra thậm chí còn vô nghĩa hơn. –

+3

Có, nhưng nếu thư mục tồn tại thì có thể anh ấy không muốn sao chép ứng dụng, vì vậy việc kiểm tra sẽ hữu ích trong tình huống đó. – Seyren

+2

Nếu trường hợp đó, anh ta nên kiểm tra xem tệp cụ thể có tồn tại thay vì chỉ thư mục hay không. – paz

5

Hãy thử điều này: Directory.Exists(TheFolderName)Directory.CreateDirectory(TheFolderName)

(Bạn có thể cần: Imports System.IO)

5

VB.NET? System.IO.Directory.Exists (đường dẫn chuỗi)

+0

Bạn là người đầu tiên đăng một vài giây. Bạn nên nhận được một số phiếu bầu. –

9

Hãy thử lớp System.IO.DirectoryInfo.

Mẫu từ MSDN:

Imports System 
Imports System.IO 

Public Class Test 
    Public Shared Sub Main() 
     ' Specify the directories you want to manipulate. 
     Dim di As DirectoryInfo = New DirectoryInfo("c:\MyDir") 
     Try 
      ' Determine whether the directory exists. 
      If di.Exists Then 
       ' Indicate that it already exists. 
       Console.WriteLine("That path exists already.") 
       Return 
      End If 

      ' Try to create the directory. 
      di.Create() 
      Console.WriteLine("The directory was created successfully.") 

      ' Delete the directory. 
      di.Delete() 
      Console.WriteLine("The directory was deleted successfully.") 

     Catch e As Exception 
      Console.WriteLine("The process failed: {0}", e.ToString()) 
     End Try 
    End Sub 
End Class 
19

Dưới System.IO, có một lớp được gọi là Directory. Thực hiện như sau:

If Not Directory.Exists(path) Then 
    Directory.CreateDirectory(path) 
End If 

Nó sẽ đảm bảo rằng thư mục ở đó.

+3

Vì vậy sẽ Directory.CreateDirectory (đường dẫn). Không cần kiểm tra trước. –

+2

Dường như (gần như) giống với câu trả lời được đánh dấu o.O –

1

Bạn nên thử sử dụng Đối tượng hệ thống tệp hoặc FSO. Có nhiều phương pháp thuộc đối tượng này kiểm tra xem các thư mục có tồn tại hay không cũng như tạo các thư mục mới.

4

Directory.CreateDirectory() nên làm điều đó. Ngoài ra, trong Vista, bạn có thể không viết vào C: trực tiếp trừ khi bạn chạy nó với tư cách quản trị viên, vì vậy bạn có thể chỉ muốn bỏ qua và tạo thư mục bạn muốn trong thư mục con của C: (mà tôi muốn nói là một thói quen tốt để được theo sau anyways - có bao nhiêu người không thể tin được của nó chỉ đổ tào lao vào C:..

Hy vọng rằng sẽ giúp

4

(nhập khẩu System.IO)

if Not Directory.Exists(Path) then 
    Directory.CreateDirectory(Path) 
end if
+2

Bạn không cần phải kiểm tra xem nó có tồn tại trước không, CreateDirectory sẽ làm điều đó cho bạn. –

10

Vì câu hỏi không chỉ định .NET, điều này sẽ hoạt động trong VBScript hoặc VB6.

Dim objFSO, strFolder 
strFolder = "C:\Temp" 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
If Not objFSO.FolderExists(strFolder) Then 
    objFSO.CreateFolder(strFolder) 
End If 
+1

ví dụ tuyệt vời :) – Teddybugs

0

Tôi thấy cách thức này hoạt động, quy trình tạo hộp thoại cho phép người dùng đặt tên thư mục và đặt thư mục nơi bạn muốn.

Cheers

3
If Not Directory.Exists(somePath) then 
    Directory.CreateDirectory(somePath) 
End If 
0

Chỉ cần làm điều này:

 Dim sPath As String = "Folder path here" 
    If (My.Computer.FileSystem.DirectoryExists(sPath) = False) Then 
     My.Computer.FileSystem.CreateDirectory(sPath + "/<Folder name>") 
    Else 
     'Something else happens, because the folder exists 
    End If 

tôi tuyên bố là đường dẫn thư mục như là một String (sPath) để theo cách đó nếu bạn sử dụng nó nhiều lần nó có thể được thay đổi một cách dễ dàng nhưng cũng có thể thay đổi thông qua chương trình.

Hy vọng điều đó sẽ hữu ích!

-nfell2009

Các vấn đề liên quan