Vb.net 如何为StreamWriter指定带空格的路径

Vb.net 如何为StreamWriter指定带空格的路径,vb.net,file-io,path,Vb.net,File Io,Path,在VB.Net中,如何为StreamWriter构造函数提供包含空格的路径?StreamWriter(“C:\Users\Public\Public Users\file.txt”)不起作用。传递给StreamReader构造函数的字符串周围没有引号。引号仅在使用命令行时使用。或者使用空格作为参数之间分隔符的任何其他内容。程序需要这些双引号来识别带有嵌入空格的参数 这里没有必要,因为参数只取单个文件的路径,所以没有歧义。据我所知,该规则的唯一例外是ProcessStartInfo.Argumen

在VB.Net中,如何为StreamWriter构造函数提供包含空格的路径?StreamWriter(“C:\Users\Public\Public Users\file.txt”)不起作用。

传递给StreamReader构造函数的字符串周围没有引号。引号仅在使用命令行时使用。或者使用空格作为参数之间分隔符的任何其他内容。程序需要这些双引号来识别带有嵌入空格的参数

这里没有必要,因为参数只取单个文件的路径,所以没有歧义。据我所知,该规则的唯一例外是ProcessStartInfo.Arguments属性

因此,只需在字符串周围加上单双引号,这是编译器所需的语法。您真正的问题是文件夹的名称。Windows资源管理器为c:\users\public中的文件夹显示不同的名称。例如,c:\users\public\videos在浏览器窗口中显示为“public videos”。它试图通过扩展缩写名来提供帮助。但是,您的程序必须使用真实的文件夹名。这可能是“用户”,而不是“公共用户”。要确定答案,请使用命令行(cmd.exe)。使用
cd\users\public
dir/a


最后但并非最不重要的一点是,该文件夹在不同版本的Windows上具有不同的名称。您应该使用Environment.GetFolderPath()。“Public Users”不是一个标准的文件夹名称,但是,不知道为什么要使用它。

传递给StreamReader构造函数的字符串周围没有引号。引号仅在使用命令行时使用。或者使用空格作为参数之间分隔符的任何其他内容。程序需要这些双引号来识别带有嵌入空格的参数

这里没有必要,因为参数只取单个文件的路径,所以没有歧义。据我所知,该规则的唯一例外是ProcessStartInfo.Arguments属性

因此,只需在字符串周围加上单双引号,这是编译器所需的语法。您真正的问题是文件夹的名称。Windows资源管理器为c:\users\public中的文件夹显示不同的名称。例如,c:\users\public\videos在浏览器窗口中显示为“public videos”。它试图通过扩展缩写名来提供帮助。但是,您的程序必须使用真实的文件夹名。这可能是“用户”,而不是“公共用户”。要确定答案,请使用命令行(cmd.exe)。使用
cd\users\public
dir/a


最后但并非最不重要的一点是,该文件夹在不同版本的Windows上具有不同的名称。您应该使用Environment.GetFolderPath()。“公共用户”不是一个标准的文件夹名称,但是,不知道为什么要使用它。

下面是一个工作代码示例:

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

具有空格的文件夹的新示例:


代码未编译的原因是您在创建文件之前没有创建文件夹,即在创建文件之前必须存在该文件夹。

以下是一个工作代码示例:

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

具有空格的文件夹的新示例:


代码未编译的原因是,在创建文件之前,您尚未创建文件夹,即在创建文件之前,该文件夹必须存在。

因为StreamWriter(“C:\Users\Public\Public Users\file.txt”)也不起作用。你知道会发生什么吗?因为StreamWriter(“C:\Users\Public\Public Users\file.txt”)也不能工作。你知道会发生什么吗?如果你建议使用StreamWriter(C:\Users\Public\Public Users\file.txt),它不会编译(语法错误)。好吧!我相信你会明白的。我真的不知道你在建议什么,汉斯。更具体地说,这是没有编译的:Dim fs作为新IO.StreamWriter(C:\Users\Public\Public Users\Alarms.xml,False),我假设您已经阅读了其他注释:StreamWriter(“C:\Users\Public\Public Users\file.txt”)不起作用。是的,我现在明白了。谢谢您的帮助,Hans。如果您建议使用StreamWriter(C:\Users\Public\Public Users\file.txt),这将无法编译(语法错误)。很好!我相信你会明白的。我真的不知道你在建议什么,汉斯。更具体地说,这是没有编译的:Dim fs作为新IO.StreamWriter(C:\Users\Public\Public Users\Alarms.xml,False),我假设您已经阅读了其他注释:StreamWriter(“C:\Users\Public\Public Users\file.txt”)不起作用。是的,我现在明白了。谢谢你的帮助,汉斯。问题不在于文件名中的空格,而在于目录中的空格。请重新阅读上面的评论。@John,请看我更新的代码示例。它解决了您的问题问题问题的不是文件名中的空间,而是目录中的空间。请重新阅读上面的评论。@John,请看我更新的代码示例。它解决了你的问题