WebサービスからAndroidデバイスにbyte[]形式のファイルを送信しています。
- そのファイルがXMLファイル、つまりbyte []配列である場合、どうすれば元のXMLファイルに変換できますか。
- そのファイルが画像、つまりbyte []配列の場合、どうすれば元の画像に変換できますか。
私はsamsunggalaxyタブでandroidsdk2.2を使用しています。
WebサービスからAndroidデバイスにbyte[]形式のファイルを送信しています。
私はsamsunggalaxyタブでandroidsdk2.2を使用しています。
Webサービスは、ファイルタイプに関する識別子を送信する必要があります。バイト配列がイメージ用か一般ファイル用か。そうすれば、それがどのタイプのファイルであるかを知ることができるのはあなただけです。ファイルタイプを知った後、バイト配列を目的のファイルタイプに変換できます。また、ファイルに書き込むことができます。その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();
}
ありがとうDeepak
XMLを含むバイト配列はすでにXMLドキュメントです。XMLファイルにしたい場合は、バイトをファイルに書き込むだけです。
同じことが画像ファイルにも当てはまります。
あなたは本当にバイト配列をファイルとして書く方法を尋ねているだけですか?
Javaでファイルにバイトを書き込む方法は次のとおりです。
byte[] bytes = ...
FileOutputStream fos = new FileOutputStream("someFile.xml");
try {
fos.write(bytes);
} finally {
fos.close();
}
ブロック内で開いているストリームを閉じる必要があることに注意してくださいfinally
。そうしないと、ファイル記述子がリークするリスクがあります。リークするファイル記述子が多すぎると、後でファイルまたはソケットを開こうとして失敗し始める可能性があります。