2010-08-16 7 views
12

Bunu nasıl yapacağımı bilmiyorum. Herhangi bir yardım,InputStream (Resim) ile ByteArrayInputStream Dönüştürme

+0

http://stackoverflow.com/questions/2163644/in-java-how-can-i-convert-an-inputstream-into-a-byte-array- [] bayttan yapı olan byte http://stackoverflow.com/questions/1264709/convert-inputstream-to-byte-in-java – h3xStream

+0

'javax.imageio' sınıflarını kullanmayacağınız resimlerle tam olarak ne yapıyorsunuz? – Powerlord

+0

Amazon S3'e yükleniyor ... Java kütüphanesi Dize olmayan tüm veri için gereken ByteArrayInputStream kullanıyorum – user398371

cevap

18

Takdir edilecektir. Giriş akışından okuyun ve bir ByteArrayOutputStream'a yazın, ardından bayt dizisini elde etmek için toByteArray() numaralı telefonu arayın.

Okumak için bayt dizisinin çevresinde bir ByteArrayInputStream oluşturun. İlk

import java.io.*; 

public class Test { 


     public static void main(String[] arg) throws Throwable { 
      File f = new File(arg[0]); 
      InputStream in = new FileInputStream(f); 

      byte[] buff = new byte[8000]; 

      int bytesRead = 0; 

      ByteArrayOutputStream bao = new ByteArrayOutputStream(); 

      while((bytesRead = in.read(buff)) != -1) { 
      bao.write(buff, 0, bytesRead); 
      } 

      byte[] data = bao.toByteArray(); 

      ByteArrayInputStream bin = new ByteArrayInputStream(data); 
      System.out.println(bin.available()); 
     } 
} 
+0

Neredeyse oradaydım! Örnek için teşekkürler tho. IO'nun gerçek bir ustası! – user398371

+0

Rica ederim :) – naikus

1

Ya sonra ByteArrayInputStream için, bir bayt dizisi dönüştürmek:

Burada hızlı bir test. ByteArrayInputStream yana

File f = new File(arg[0]); 
InputStream in = new FileInputStream(f); 
// convert the inpustream to a byte array 
byte[] buf = null; 
try { 
    buf = new byte[in.available()]; 
    while (in.read(buf) != -1) { 
    } 
} catch (Exception e) { 
    System.out.println("Got exception while is -> bytearr conversion: " + e); 
} 
// now convert it to a bytearrayinputstream 
ByteArrayInputStream bin = new ByteArrayInputStream(buf);