2012-02-22 26 views
0

Imはwebserviceを使用して画像を取得しようとしていて、SDカードに保存されています。ファイルは保存されましたが、ファイルを開くことができませんでした。一度私は "イメージを読み込めませんでした"というファイルを開きます。以下は私のコードです。ファイルが正しく保存されていません

httpTransport.call(SOAP_ACTION, envelope); 
Object response = envelope.getResponse(); 
test = response.toString(); 
Blob picture = org.hibernate.Hibernate.createBlob(test.replaceAll("-", "").getBytes()); 
String FILENAME = "voucher1.jpg"; 
File root = Environment.getExternalStorageDirectory(); 
FileOutputStream f = new FileOutputStream(new File(root, FILENAME)); 
InputStream x=picture.getBinaryStream(); 
int size=x.available(); 
byte b[]= new byte[size]; 
x.read(b); 
f.write(b); 
f.close(); 

助けてください。ありがとう

+0

テストの内容は何ですか、なぜあなたは ' - 'を ''で置き換えますか? – njzk2

+0

これは、webserviceの文字列に変換して値を返すbyte []です。私がテスト文字列をチェックしたときにデフォルトで ' - 'があったからです。 –

+0

これは問題である可能性があります。あなたが別のエンコーディングを使用すると、byte [] - > String - > byte []は動作しません。また、Blobの作成のポイントは何ですか?ハイフンをすべて削除すると、ファイルの一部が失われます – njzk2

答えて

0

私は私がこれとその作業罰金を試す

...私はちょうど画像を取得する画像のURLを使用し、それが動作format..instead使用のWebサービスを変更しました。ありがとう。

URL url = new URL(fileURL); 
URLConnection conexion = url.openConnection(); 
conexion.connect(); 
int lenghtOfFile = conexion.getContentLength(); 
Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile); 
InputStream input = new BufferedInputStream(url.openStream()); 
OutputStream output = new FileOutputStream("/sdcard/caldophilus.jpg"); 
byte data[] = new byte[1024]; 
long total = 0; 
while ((count = input.read(data)) != -1) { 
total += count; 
output.write(data, 0, count); 
} 
output.flush(); 
output.close(); 
input.close(); 
-1

f.flush()に電話する必要があると仮定して、すべてのデータをファイルに書き出します。

f.flush(); 
f.close(); 
+0

...同じ問題。 –

+0

ドキュメント: "このストリームはバッファされません。ほとんどの呼び出し元はこのストリームをBufferedOutputStreamでラップする必要があります。"ストリームを閉じることは、すべてのものをとにかくフラッシュさせるのに十分です – colithium

関連する問題