как получить файл из ресурсов в виде потока? (.сеть) - PullRequest
3 голосов
/ 21 декабря 2008

У меня есть несколько файлов в ресурсах (файлы xsd), которые я использую для проверки полученных сообщений XML. Файл ресурсов, который я использую, называется AppResources.resx и содержит файл с именем clientModels.xsd . Когда я пытаюсь использовать файл следующим образом: AppResources.clientModels, я получаю строку с содержимым файла. Я хотел бы получить поток вместо этого. я не хочу использовать assembly.GetManifestResourceStream, так как у меня был плохой опыт работы с ним (использование этих потоков для архивирования файлов с SharpZipLib по какой-то причине не работало) Есть ли другой способ сделать это? я слышал о ResourceManager - это что-нибудь, что может мне помочь?

Ответы [ 3 ]

3 голосов
/ 21 декабря 2008

Не могли бы вы передать строку, полученную в System.IO.StringReader, возможно? Это может делать то, что вы хотите. Вы также можете проверить MemoryStream.

1 голос
/ 26 февраля 2009

У меня есть zip-файл, загруженный как ресурс, и обращение к нему напрямую из пространства имен дает мне байты, а не строку. Щелкните правой кнопкой мыши свой файл в конструкторе ресурсов и измените тип файла с текстового на двоичный. Затем вы получите байтовый массив, который вы можете загрузить в MemoryStream.

1 голос
/ 31 декабря 2008

вот код по ссылке

//Namespace reference
using System;
using System.Resources;


#region ReadResourceFile
/// <summary>
/// method for reading a value from a resource file
/// (.resx file)
/// </summary>
/// <param name="file">file to read from</param>
/// <param name="key">key to get the value for</param>
/// <returns>a string value</returns>
public string ReadResourceValue(string file, string key)
{
    //value for our return value
    string resourceValue = string.Empty;
    try
    {
        // specify your resource file name 
        string resourceFile = file;
        // get the path of your file
        string filePath = System.AppDomain.CurrentDomain.BaseDirectory.ToString();
        // create a resource manager for reading from
        //the resx file
        ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(resourceFile, filePath, null);
        // retrieve the value of the specified key
        resourceValue = resourceManager.GetString(key);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        resourceValue = string.Empty;
    }
    return resourceValue;
}
#endregion

Я не написал код, откуда он пришел

http://www.dreamincode.net/code/snippet1683.htm

НТН

кости

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