2008-12-21 10 views
3

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

ответ

3

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

1

здесь код из ссылки

//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

НТН

кости

1

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

Смежные вопросы