2011-03-27 159 views
1

在VB.Net中,如何爲StreamWriter構造函數提供包含空格的路徑? StreamWriter(「」「C:\ Users \ Public \ Public Users \ file.txt」「」)不起作用。如何爲StreamWriter指定具有空格的路徑

+0

爲什麼有這麼多「 – N0Alias 2011-03-27 23:38:16

+0

由於StreamWriter的?(」 C:\用戶\公用\公用用戶\ file.txt的「)也不行,你知道怎麼會 – John 2011-03-27 23:48:09

回答

0

您不會在您傳遞給StreamReader構造函數的字符串周圍加引號。引號僅在使用命令行時使用。或者其他任何使用空格作爲參數之間的分隔符。該程序需要雙引號來識別嵌入空間的參數。

這裏沒有必要,沒有歧義,因爲參數只取得單個文件的路徑。我知道的唯一例外是ProcessStartInfo.Arguments屬性。

因此,只需在字符串周圍放置單引號即可,這是編譯器需要的語法。你真正的問題是文件夾的名稱。 Windows資源管理器爲c:\ users \ public中的文件夾顯示不同的名稱。例如c:\ users \ public \ videos作爲「公開視頻」顯示在資源管理器窗口中。它試圖通過擴大縮寫名稱來提供幫助。但是,您的程序必須使用真實的文件夾名稱。這可能是「用戶」,而不是「公共用戶」。要確定,請使用命令行(cmd.exe)。使用cd \users\publicdir /a

最後但並非最不重要的是,該文件夾在不同版本的Windows上具有不同的名稱。你應該使用Environment.GetFolderPath()。 「公共用戶」不是一個標準的文件夾名稱,但不知道你爲什麼使用它。

+0

如果你提出的StreamWriter(C:\ Users \ Public \ Public Users \ file.txt),這不會編譯(Syntax error)。 – John 2011-03-28 00:09:22

+0

好吧,我相信你可以找出那個。 – 2011-03-28 00:12:34

+0

我真的不知道你在建議什麼,Hans。更具體地說,這是不能編譯的:Dim fs As New IO.StreamWriter(C:\ Users \ Public \ Public Users \ Alarms.xml,False) – John 2011-03-28 12:14:26

1

這裏是工作的代碼示例:

Dim fs As New System.IO.StreamWriter("e:\test 123.txt") 
fs.Write("hello") 
fs.Close() 

UPDATE:

與空間(一個或多個)文件夾中的新的例子:

'this is your filename 
Dim Filename As String = "e:\folder with space\test 123.txt" 

'this is your folder 
Dim Folderpath As String = System.IO.Path.GetDirectoryName(Filename) 

'now do checking if the folder exists, if not create the folder 
If System.IO.Directory.Exists(Folderpath) = False Then 
    System.IO.Directory.CreateDirectory(Folderpath) 
End If 

'now create the file as usual 
Dim fs As New System.IO.StreamWriter("e:\folder with space\test 123.txt") 
fs.Write("hello") 
fs.Close() 

原因你的代碼沒編譯是因爲在創建文件之前尚未創建文件夾,即該文件夾必須存在才能創建文件。

+0

這不是文件名中的空格這是問題,它是目錄中的空間。重新閱讀上面的評論。 – John 2011-03-28 12:09:42

+0

@John,請看看我更新的代碼示例。它解決了你的問題 – Predator 2011-03-28 16:09:06