Mar 26 2007

.NET: como acessar os arquivos em um smart device?

Autor: Marcos Dell Antonio - Categorias: .NET, Direct3D, Mobilidade

Complementando o post anterior, neste vou escrever sobre como acessar um arquivo (seja ele uma imagem, um txt, ou qualquer outra coisa) que está no emulador ou smart device.

Como já foi descrito, existem duas maneiras de enviar um arquivo para o dispositivo: embutido no executável (Build Action = Embedded Resource) ou literalmente copiado da máquina origem para a destino (Build Action = Content).

Para acessar arquivos enviados como Embedded Resource, o código é este:

string f = "NomeDoProjeto.NomeDoArquivo.xxx";
Stream s = Assembly.GetExecutingAssembly().
               GetManifestResourceStream(f);

Veja que o nome do arquivo deve conter o nome do projeto também. Caso o arquivo esteja dentro de alguma pasta, deverá ser aparecer também. Ex: NomeDoProjeto.Imagens.Figura1.bmp.

Para acessar os arquivos enviados como Content, ou seja, copiados da origem pro destino da forma mais normal que existe, é da seguinte maneira:

string path = Path.GetDirectoryName
    (Assembly.GetExecutingAssembly().
     GetName().CodeBase);

string file = path + @"NomeDoArquivo.xxx";
StreamReader stream = new StreamReader(file); 

Repare na manobra usada para pegar o diretório atual. Todo aquele estupro de legibilidade existe porque o método GetCurrentDirectory da classe Directory não funciona no .NET Compact Framework.

Também vale a pena lembrar que por default o executável e os arquivos são copiados para a pasta \Program Files\NomeDoProjeto.

É isso ae. Até +.

Adicione ao del.icio.us del.icio.us | Adicione ao Rec6 Rec6

Faça um comentário