根据文件头获取文件类型
我这里只列举了4种,其他种类只需要替换掉对应的判断即可
**
* 获取文件类型
* @author wdd
* 版本 : 1.0.0.5
* TODO 获取文件类型
* @author wdd
* created at 2022/9/7 14:08
*
*/
object FileTypeUtils {
fun type(inputStream: InputStream): String {
val b: ByteArray = ByteArray(4)
inputStream.read(b, 0, b.size)
val stringBuilder = StringBuilder()
for (i in b.indices) {
val v: Byte = b[i] and 0xFF.toByte()
val hv = Integer.toHexString(v.toInt())
if (hv.length < 2) {
stringBuilder.append(0)
}
stringBuilder.append(hv)
}
var xxx: String = stringBuilder.toString().uppercase(Locale.getDefault())
return getType(xxx)
}
fun type(bytes: ByteArray): String {
val b: ByteArray = ByteArray(4)
for (i in 0..3){
b[i] =bytes[i]
}
val stringBuilder = StringBuilder()
for (i in b.indices) {
val v: Byte = b[i] and 0xFF.toByte()
val hv = Integer.toHexString(v.toInt())
if (hv.length < 2) {
stringBuilder.append(0)
}
stringBuilder.append(hv)
}
var xxx: String = stringBuilder.toString().uppercase(Locale.getDefault())
return getType(xxx)
}
private fun getType(str :String):String{
return if (str.contains("FFD8FF")) "image"
else if (str.contains("89504E")) "image"
else if (str.contains("504B03")) "ofd"
else if (str.contains("255044")) "pdf"
else "其他"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)