2013年5月14日

Java 判斷Object類別及取得Object類別名稱


1.透過 Object裡的 getClass.getName()可以得到Object具體的類型

2.判斷Object可用 instanceof

  if(obj instanceof String)
如果obj是String則會回傳true,如果不是則會回傳false


[JAVA] 傳送object發生 java.io.StreamCorruptedException



private byte[] objtobytearray(IPinfo gotobj, byte[] key) {
//gotobj是一個IPinfo object
  ByteArrayOutputStream buffers = new ByteArrayOutputStream();
  try {
   ObjectOutputStream out = new ObjectOutputStream(buffers);
   out.writeObject(gotobj);
   out.flush();
   out.close();
   //out close之前要加flush
  } catch (Exception e) {
   System.out.println("error");
  }
                byte[] guarddataarray = new byte[buffers.toByteArray().length];
  System.out.println("the data length length:"+guarddataarray.length);
  System.out.println("the key length length:"+key.length);
  if (guardflag)
   guarddataarray = guard.AES_Data_Encrypter(buffers.toByteArray(),
     key);
  else
   guarddataarray = buffers.toByteArray();
  return guarddataarray;
 }
如果沒有在 out.close之前加入 flush 則透過socket傳送buffers的資料時 接收方可能會發生 java.io.StreamCorruptedException 上網查詢原因時,因為若沒有加入flush,可能buffers內沒有結束符號,導致接收方,認為stream沒有結束 所以會產生exception


2013年5月13日

Drawable bitmap byte陣列互相轉換

Drawable轉bitmap
Drawable oDrawable = xxx; //xxx根據自己的情況獲取drawable
BitmapDrawable BD = (BitmapDrawable) oDrawable;
Bitmap BM = BD.getBitmap();
Bitmap轉byte陣列
Bitmap newbm;
 
// 把 bitmap 轉成 byte
ByteArrayOutputStream stream = new ByteArrayOutputStream();
newbm.compress(Bitmap.CompressFormat.JPEG, 100, stream );
byte bytes[] = stream.toByteArray();
byte陣列轉Bitmap
Bitmap geticon
byte[] data
geticon = BitmapFactory.decodeByteArray(data, 0, len);
Bitmap轉Drawable
Drawable showicon = new BitmapDrawable(geticon);