Как получить часть от полного пути в C#?

1117 У меня была та же проблема, и я смог ее решить.

Моя ошибка была:

Ожидание устройства. Устройство USB не найдено

Это происходит, когда я использовал SONY XPERIA Tipo Dual и Samsung Galaxy Core Duos i8262.

Я решил проблему в обоих устройствах.

SONY XPERIA Tipo Dual

  1. Проверьте, включена ли «Отладка USB» в «Настройки-> Параметры разработчика»
  2. Подключите устройство к ПК и запустите ваше приложение. Убедитесь, что «Целевое устройство» как «Устройство USB» в Конфигурациях запуска / отладки.
  3. Если произошла ошибка «Ожидание устройства. USB-устройство не найдено», перейдите в «Диспетчер устройств» и убедитесь, что ваше устройство относится к категории «Другие устройства» желтого цвета. Это означает, что ваше устройство не обнаружено Windows.
  4. Установите « SONY PC Companion », который автоматически определит ваш драйвер.

  5. Запустите приложение снова. Вы можете видеть, что ваше приложение работает на вашем устройстве.

Samsung Galaxy Core Duos i8262

  1. Проверьте, включена ли «Отладка USB» в «Настройки-> Параметры разработчика»
  2. Подключите устройство на ПК и запустите ваше приложение. Убедитесь, что «Целевое устройство» как «USB-устройство» в конфигурациях запуска / отладки.
  3. Если произошла ошибка «Ожидание устройства. USB-устройство не найдено», перейдите в «Диспетчер устройств» и убедитесь, что ваше устройство относится к категории «Другие устройства» желтого цвета. Это означает, что ваше устройство не обнаружено Windows.
  4. Установите USB-накопитель. Вы можете найти его здесь . Направьте URL для загрузки

  5. Запустите приложение снова. Вы можете видеть, что вы все равно получаете ту же ошибку. Перейти в раздел уведомлений. Как видите, телефон подключен как медиаустройство (Media device (MTP)) Вам нужно изменить его как «Камера (PTP)», коснувшись уведомления.

  6. Запустите приложение снова. Вот это да. Это работает ...

5
задан Nicolas Raoul 22 April 2013 в 10:39
поделиться

9 ответов

Edit: Пожалуйста, прочтите вопрос OP и все ее комментарии, прежде чем отрицать это. Заглавный вопрос ОП НЕ ТОЧНО то, что она хотела. Мой ответ дал ей то, что ей нужно для решения ее проблемы. Вот почему она проголосовала за ответ. Да, ответ Джоэла правильный, если он конкретно отвечает на вопрос заголовка. Но, прочитав ее комментарии, вы увидите, что это не совсем то, что она искала. Спасибо.

Используйте это ...

string strFullPath = @"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd";
string strDirName; 
int intLocation, intLength;

intLength = strFullPath.Length;
intLocation = strFullPath.IndexOf("DTDs");

strDirName = strFullPath.Substring(0, intLocation); 

textBox2.Text = strDirName;
7
ответ дан 18 December 2019 в 05:11
поделиться

Используйте System.IO.Path.GetDirectoryName () для всего пути или new DirectoryInfo (путь) .Parent.Name только для имя этой папки.


В указанном вами пути нет каталога с именем «DTD». Похоже, есть файл с именем "DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd" , но точки (.) В этом пути не являются допустимыми символами разделителя каталогов. . Вы имели в виду "DannyGoXuk \ DTDs \ xhtml-math-svg-flat.dtd" ?

Если это так, с учетом всего нового пути , вам нужно что-то вроде этого чтобы вернуть список файлов в папке DTDs :

string path = @"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk\DTDs\xhtml-math-svg-flat.dtd";
string[] files = new DirectoryInfo(path).Parent.GetFiles();

в окне свойств я выбираю Build Type как Embedded resource.

И теперь мы наконец дошли до него. Когда вы выбираете «Встроенный ресурс», элемент включается в ваш исполняемый файл программы. Прямого пути больше нет . Вместо этого установите Тип сборки на «Содержимое» и установите «Копировать в выходной каталог» на «Всегда копировать» или «Копировать, если новее».

76
ответ дан 18 December 2019 в 05:11
поделиться
System.IO.Path.GetFileName( System.IO.Path.GetDirectoryName( fullPath ) )

Это вернет только имя папки, содержащей файл.

Для

C:\windows\system32\user32.dll

это вернет

system32

Я предполагаю, что это то, что вы хотите.

5
ответ дан 18 December 2019 в 05:11
поделиться

Вызов

System.IO.Path.GetFileName

с полным путем к каталогу возвращает последнюю часть пути, которая является именем каталога. GetDirectoryName возвращает полный путь к родительскому каталогу, что является нежелательным.

Если у вас есть имя файла, и вам нужно только имя родительского каталога:

var directoryFullPath = Path.GetDirectoryName(@"C:\DTDs\mydtd.dtd");  // C:\DTDs
var directoryName = Path.GetFileName(directoryFullPath);  // DTDs
12
ответ дан 18 December 2019 в 05:11
поделиться

Вы можете использовать:

System.IO.Path.GetDirectoryName(path);
2
ответ дан 18 December 2019 в 05:11
поделиться

Не используйте манипуляции со строками напрямую. Вместо этого используйте GetDirectoryName класса Path:

System.IO.Path.GetDirectoryName(myPath);
2
ответ дан 18 December 2019 в 05:11
поделиться

Используйте объект FileInfo ...

FileInfo info = new FileInfo(@"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd");
string directoryName = info.Directory.FullName;

Файл даже не обязательно должен существовать на самом деле.

2
ответ дан 18 December 2019 в 05:11
поделиться

Вы можете использовать Путь ...

Path.GetDirectoryName(myStr);
2
ответ дан 18 December 2019 в 05:11
поделиться

Path.GetDirectory по указанному вами пути возвращает:

«C: \ Users \ Ronny \ Desktop \ Sources \ Danny \ kawas \ trunk \ csharp \ ImportME \ XukMe \ bin \ Debug "

Попробуйте сами:

var path = Path.GetDirectoryName(@"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd");

Ваш вопрос немного странный - нет каталога с именем DTD.

1
ответ дан 18 December 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: