关于循环指定文件夹下面图片MD5值

来源:互联网 发布:网络侦探黄金大 编辑:程序博客网 时间:2024/05/21 10:34
public class MD5Tool {

public static void main(String[] args){
getMD5("C:\\Users\\Administrator\\Desktop\\work");
}


public static void getMD5(String names){   
// 获得指定文件对象  
        File file = new File(names); 
        String urlName = "";
        // 获得该文件夹内的所有文件   
        File[] array = file.listFiles();   


        for(int i=0;i<array.length;i++)
        {   
       
            if(array[i].isFile())//如果是文件
            {   
                    //for (int j = 0; j < deep; j++)//输出前置空格
                  // String pName = array[i].getName();  
                   //System.out.println("=="+pName);
                   //urlName = "C:\\Users\\Administrator\\Desktop\\work\\"+pName;
                   String name = array[i].getPath();
                   md(name);
                  
            }
           
        }   



         
    }




private static void md(String urlName) {
String name = "";
        try {            
            URL url = new URL(urlName);
            System.out.println("URLName"+urlName);  
            InputStream inputStream = new BufferedInputStream(url.openStream());  
            byte[] bytes = new byte[1024];  
            int len = 0;                      
            MessageDigest messagedigest = MessageDigest.getInstance("MD5");           
            while ((len = inputStream.read(bytes)) > 0) {  
                messagedigest.update(bytes, 0, len);  
            }
            name = MD5Util.bufferToHex(messagedigest.digest());
            System.out.print("\""+name+"\",");
            inputStream.close();              
        } catch (MalformedURLException e) {  
            
        } catch (IOException e) {  
              
        } catch (NoSuchAlgorithmException e) {  
       
        } 

}  



public class MD5Util {
/**  
     * 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符  
     */    
    protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6','7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };    
    protected static MessageDigest messagedigest = null;    
    static {    
        try {    
            messagedigest = MessageDigest.getInstance("MD5");    
        } catch (NoSuchAlgorithmException e) {    
            e.printStackTrace();    
        }    
    }    
    
    public static String getFileMD5String(File file) throws IOException {    
        InputStream fis;    
        fis = new FileInputStream(file);    
        byte[] buffer = new byte[1024];    
        int numRead = 0;    
        while ((numRead = fis.read(buffer)) > 0) {    
            messagedigest.update(buffer, 0, numRead);    
        }    
        fis.close();    
        return bufferToHex(messagedigest.digest());    
    }    
      
    public static String getStringMD5(String str){  
         byte[] buffer=str.getBytes();  
         messagedigest.update(buffer);  
        return bufferToHex(messagedigest.digest());  
    }  
    
    public static String bufferToHex(byte bytes[]) {    
        return bufferToHex(bytes, 0, bytes.length);    
    }    
    
    private static String bufferToHex(byte bytes[], int m, int n) {    
        StringBuffer stringbuffer = new StringBuffer(2 * n);    
        int k = m + n;    
        for (int l = m; l < k; l++) {    
            appendHexPair(bytes[l], stringbuffer);    
        }    
        return stringbuffer.toString();    
    }    
    
    private static void appendHexPair(byte bt, StringBuffer stringbuffer) {    
        char c0 = hexDigits[(bt & 0xf0) >> 4];// 取字节中高 4 位的数字转换    
        // 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同    
        char c1 = hexDigits[bt & 0xf];// 取字节中低 4 位的数字转换    
        stringbuffer.append(c0);    
        stringbuffer.append(c1);    
    }    
}


阅读全文
1 0