2011-03-27 158 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