【发布时间】:2014-02-28 06:10:25
【问题描述】:
我的要求是检查文件是否为 jpeg / jpg / png 。我写了以下代码。
public boolean isFileValid(File file) throws IOException {
DataInputStream input = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
int fileSignature = input.readInt();
input.close();
logger.info(fileSignature);
if (fileSignature == 0xffd8ffe0) {
logger.info("File is jpeg");
return true;
} else if(fileSignature == 0x89504E47){
logger.info("file is in PNG");
return true;
} else {return false;}
}
我使用的是 ubuntu 13.04,上面的代码对我来说很好。我读到文件签名在各种操作系统中没有变化(我不太确定这一点,因为我没有在其他操作系统中测试过)。也是可以改变文件的签名吗?有没有更好的方法可以在不使用第三方库的情况下做到这一点?
【问题讨论】:
-
if (fileSignature == 0xffd8ffe0) {} else if(fileSignature == 0xffd8ffe0){}??
标签: java validation file-format magic-numbers