关机重启
V1
2022/07/20阅读:12主题:橙心
获取文件类型
通过文件后缀名获取
val fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri
.toString())
val mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
fileExtension.lowercase()) ?: ""
通过ContentResolver查询
val mimeType = if (uri.scheme == ContentResolver.SCHEME_CONTENT) {
val cr: ContentResolver = ContextUtil.context.contentResolver
cr.getType(uri) ?: ""
} else {
val fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri
.toString())
MimeTypeMap.getSingleton().getMimeTypeFromExtension(
fileExtension.lowercase()) ?: ""
}
使用MediaMetadataRetriever查询
val mediaMetadataRetriever = MediaMetadataRetriever()
mediaMetadataRetriever.setDataSource(filePath)
val mimeType = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE) ?: ""
mediaMetadataRetriever.release()
使用Files.probeContentType方式
在Android上要26以上才能用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val type = Files.probeContentType(File(filePath).toPath())
}
读取文件头部字节
使用java中URLConnection提供的“类型猜测”方法查询
1. 通过文件名查询类型
URLConnection.guessContentTypeFromName(filePath)
2. 读取文件流判断类型
URLConnection.guessContentTypeFromStream()
读取文件头 前16个字节进行判断
/**
* 获取文件头信息
*
* @param filePath
* @return
*/
fun getFileHeader(filePath: String?): String? {
var fileInputStream: FileInputStream? = null
var value: String? = null
try {
fileInputStream = FileInputStream(filePath)
val b = ByteArray(3)
fileInputStream.read(b, 0, b.size)
value = bytesToHexString(b)
} catch (e: Exception) {
} finally {
if (null != fileInputStream) {
try {
fileInputStream.close()
} catch (e: IOException) {
}
}
}
return value
}
/**
* 将byte字节转换为十六进制字符串
*
* @param src
* @return
*/
private fun bytesToHexString(src: ByteArray?): String? {
val builder = StringBuilder()
if (src == null || src.isEmpty()) {
return null
}
var hv: String
for (i in src.indices) {
hv = Integer.toHexString(src[i] and 0xFF).uppercase()
if (hv.length < 2) {
builder.append(0)
}
builder.append(hv)
}
return builder.toString()
}
BitmapFactory.Options
文件可转为Bitmap的话可以使用BitmapFactory.Options中的outMimeType属性来获取
作者介绍
关机重启
V1