Есть несколько проблем с этим кодом:
- Вы читаете новый
Int
каждый раз, когда делаете тест - Вы пытаетесь проверить 4-байтовый
Int
против 6-байтового значения - Порядок байтов будет неправильным на процессоре с прямым порядком байтов
Вот пример того, как вы можете структурировать этот код.
def checkPhotoType(file: File): Option[String] = {
val param = new DataInputStream(new BufferedInputStream(new FileInputStream(file)))
val bytes = (1 to 6).map( _ => param.readByte).toList
bytes match {
case List(0xFF, 0xD8, 0xFF, 0xDB, _, _) =>
Some("jpg/jpeg")
case List(0x47, 0x49, 0x46, 0x38, 0x37, 0x61) =>
Some("GIF87a")
case List(0x47, 0x49, 0x46, 0x38, 0x39, 0x61) =>
Some("GIF89a")
case _ =>
None
}
}