文件操作:使用ByteArrayInputStream
问题:
使用InputStream读取->InputStream.read
内部的指针位置就改变了,后面再读取时缺少文件头信息,不能正常使用。
解决:
让指针再到开始位置就行了
使用 BufferedInputStream 的API:ByteArrayInputStream.reset
1 判断文件类型
public static String getFileType(ByteArrayInputStream inputStream) {
String type = "";
inputStream.mark(inputStream.available() + 1);
byte[] bytes = new byte[4];
inputStream.read(bytes, 0, 4);
if (bytes[0] == (byte) 0x3C && bytes[1] == (byte) 0x3F && bytes[2] == (byte) 0x78 && bytes[3] == (byte) 0x6D) {
type = "XML";
}else{
type = "UNKNOW";
}
inputStream.reset();
return type;
}
2 File转为ByteArrayInputStream
File file = new File("C:\\Users\\17240\\Downloads\\3.xml");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] fileContent = new byte[(int) file.length()];
fileInputStream.read(fileContent);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileContent);