ByteArray в XML-файл в Android - PullRequest
       31

ByteArray в XML-файл в Android

3 голосов
/ 17 июня 2011

Я отправляю файл в формате байта [] из веб-службы на устройство Android.

  1. Если этот файл является XML-файлом, т.е. массивом byte [], то как мне преобразовать его в исходный XML-файл.
  2. Если этот файл представляет собой массив изображений, т.е. массив byte [], то как мне преобразовать его в исходное изображение?

Я использую Android SDK 2.2 на вкладке Samsung Galaxy.

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

Ваш веб-сервис должен отправить вам некоторый идентификатор о типе файла. является ли массив байтов для изображения или для общего файла. только тогда вы сможете узнать, какой это тип файла. зная тип файла, вы можете преобразовать массив байтов в нужный вам тип файла. Также вы можете написать в файл. Если вы хотите распечатать этот XML в logcat, вы можете использовать

String xmlData = new String(byte[] data); System.out.println(xmlData)

создайте файл (будь то xml или изображение или что-то еще), если вы знаете формат файла

String extension = ".xml"//or ".jpg" or anything
String filename = myfile+extension;
byte[] data = //the byte array which i got from server
File f = new File(givepathOfFile+filename );

        try {
            f.createNewFile();

            // write the bytes in file
            FileOutputStream fo = new FileOutputStream(f);
            fo.write(data );
            fo.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Спасибо Дипак

0 голосов
/ 17 июня 2011

Массив байтов, содержащий XML , уже является документом XML. Если вы хотите сделать его XML-файлом, просто запишите байты в файл.

То же самое относится и к файлу изображения.

Вы действительно просто спрашиваете, как записать байтовый массив в файл?


Вот как записать байты в файл на Java.

byte[] bytes = ...
FileOutputStream fos = new FileOutputStream("someFile.xml");
try {
    fos.write(bytes);
} finally {
    fos.close();
}

Обратите внимание, что вам нужно закрыть открытый поток в блоке finally, иначе вы рискуете утечь файловые дескрипторы. Если вы пропустите слишком много файловых дескрипторов, более поздние попытки открыть файлы или сокеты могут начать терпеть неудачу.

...