Как указать путь с пробелами для StreamWriter - PullRequest
1 голос
/ 28 марта 2011

В VB.Net, как мне предоставить конструктору StreamWriter путь с пробелами? StreamWriter ("" "C: \ Users \ Public \ Public Users \ file.txt" "") не работает.

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Вот пример рабочего кода:

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 голосов
/ 28 марта 2011

Вы не помещаете кавычки вокруг строки, которую передаете в конструктор StreamReader.Кавычки используются только при использовании, скажем, командной строки.Или что-нибудь еще, что использует пробелы в качестве разделителей между аргументами.Программа требует, чтобы эти двойные кавычки распознавали аргумент со встроенным пробелом.

Здесь нет необходимости, здесь нет двусмысленности, поскольку аргумент принимает путь только к одному файлу.Единственное исключение из этого правила, о котором я знаю, это свойство ProcessStartInfo.Arguments.

Итак, просто поместите одинарные двойные кавычки вокруг строки, синтаксис, который требуется компилятору.Ваша настоящая проблема - название папки.Проводник Windows показывает другое имя для папок в каталоге c: \ users \ public.Например, c: \ users \ public \ videos отображается в окне проводника как «Общедоступные видео».Он пытается быть полезным, расширяя сокращенное название.Однако ваша программа должна использовать имя папки real .Это, вероятно, «пользователи», а не «публичные пользователи».Чтобы узнать наверняка, используйте командную строку (cmd.exe).Используйте cd \users\public и dir /a.

И последнее, но не менее важное: эта папка имеет другое имя в разных версиях Windows.Вы должны использовать Environment.GetFolderPath ().«Общедоступные пользователи» не являются стандартным именем папки, однако не уверен, почему вы используете его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...