mercoledì 21 novembre 2012

Java ottenere MimeType da bytes[]

Esiste una comoda libreria che consente , dato l'array di byte, di determinare il mime type del file.
La libreria si chiama jmimemagic-0.1.0.jar ( si può scaricare qui ).
Richiede come dipendenza i 2 seguenti jar:
  • commons-logging.jar;
  • jakarta-oro.jar.
Vediamo un esempio su un progetto Java, in cui ho incluso nel classpath i 3 jar.


Magic m=new Magic();
byte[] lb=FileUtil.load(new File("file/WS.png"));
MagicMatch match = m.getMagicMatch(lb);
System.out.println(match.getMimeType());

L'array di byte dal file è stato ottenuto  con il seguente metodo statico di una classe denominata FileUtil di cui incollo il codice:

import java.io.*;
public class FileUtil {

  public final static byte[] load(String fileName)
   {
     try { 
       FileInputStream fin=new FileInputStream(fileName);
       return load(fin);
     }
     catch (Exception e) {
  
       return new byte[0];
     }
   }

   public final static byte[] load(File file)
   {
     try { 
       FileInputStream fin=new FileInputStream(file);
       return load(fin);
     }
     catch (Exception e) {
      
       return new byte[0];
     }
   }

   public final static byte[] load(FileInputStream fin)
   {
     byte readBuf[] = new byte[512*1024];
   
     try { 
       ByteArrayOutputStream bout = new ByteArrayOutputStream();
     
       int readCnt = fin.read(readBuf);
       while (0 < readCnt) {
         bout.write(readBuf, 0, readCnt);
         readCnt = fin.read(readBuf);
       }
       
       fin.close();
       
       return bout.toByteArray();
     }
     catch (Exception e) {
      
       return new byte[0];
     }
   }
}


Nessun commento:

Posta un commento