Получение встроенных ресурсов со специальными символами

I ' m проблема с получением потоков для встроенных ресурсов. В большинстве онлайн-примеров показаны пути, которые можно напрямую преобразовать, заменив косую черту пути на точку для источника (MyFolder / MyFile.ext становится MyNamespace.MyFolder.MyFile.ext). Однако когда в имени папки есть точка и используются специальные символы, получение имени ресурса вручную не работает. Я пытаюсь найти функцию, которая может преобразовать путь в имя ресурса, поскольку Visual Studio переименовывает их при компиляции ..

Эти имена из решения ...

  1. Content / jQuery.UI-1.8.2 / jQuery.UI.css
  2. Скрипты / jQuery-1.5.2 / jQuery.js
  3. Скрипты / jQuery.jPlayer-2.0.0 / jQuery.jPlayer.js
  4. Скрипты / jQuery.UI-1.8.2 / jQuery.UI.js

... заменяются на эти имена в ресурсах ...

  1. Content.jQuery.UI_1._8._2.jQuery.UI.css
  2. Scripts.jQuery_1._5._2 .jQuery. js
  3. Scripts.jQuery.jPlayer_2._0._0.jQuery.jPlayer.js
  4. Scripts.jQuery.UI_1._8._12.jQuery.UI.js

Косые черты преобразуются в точки. Однако, когда точка используется в имени папки, первая точка, по-видимому, считается расширением, а остальные точки заменяются префиксом с подчеркиванием. Однако эта логика не применима к файлу jQuery.js, может быть, потому, что «расширение» - это одно число? Вот функция, способная переводить проблемы, которые у меня были до сих пор, но не работает с путем jQuery.js.

    protected String _GetResourceName( String[] zSegments )
    {
        String zResource = String.Empty;

        for ( int i = 0; i < zSegments.Length; i++ )
        {
            if ( i != ( zSegments.Length - 1 ))
            {
                int iPos = zSegments[i].IndexOf( '.' );

                if ( iPos != -1 )
                {
                    zSegments[i] = zSegments[i].Substring( 0, iPos + 1 )
                                 + zSegments[i].Substring( iPos + 1 ).Replace( ".", "._" );
                }
            }

            zResource += zSegments[i].Replace( '/', '.' ).Replace( '-', '_' );
        }

        return String.Concat( _zAssemblyName, zResource );
    }

Есть ли функция, которая может изменить имена для меня? Что это такое? Или где мне найти все правила, чтобы написать свою функцию? Спасибо за любую помощь, которую вы можете оказать. http://hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/HttpMethod.html и пример здесь: http: / ...

Я знаю, что раньше был способ получить его с помощью общих ресурсов Apache, как описано здесь: http://hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/HttpMethod.html и пример здесь:

http://www.kodejava.org/examples/416.html

, но я считаю, что это устарело. Есть ли другой способ сделать HTTP-запрос на получение в java и получить тело ответа в виде строки, а не потока?

141
задан eis 21 June 2016 в 15:21
поделиться