Java 使用fileinputstream从文件读取字节以查找丢失的图像
我正在尝试读取.raw文件以查找一些“损坏”的图像。 我什么都试过了。 据我了解 以下几点应该有效Java 使用fileinputstream从文件读取字节以查找丢失的图像,java,parsing,io,byte,Java,Parsing,Io,Byte,我正在尝试读取.raw文件以查找一些“损坏”的图像。 我什么都试过了。 据我了解 以下几点应该有效 public void readFile(){ FileInputStream inFile = new FileInputStream(this.rawFile); System.out.println(inFile.read()); } 但只打印一个字节。我需要读取所有数据,查找255字节(表示新图像的开始),并将前255个字节的数据保存到.jpg,直到下一个255字节(下一个图像) 对不起
public void readFile(){
FileInputStream inFile = new FileInputStream(this.rawFile);
System.out.println(inFile.read());
}
但只打印一个字节。我需要读取所有数据,查找255字节(表示新图像的开始),并将前255个字节的数据保存到.jpg,直到下一个255字节(下一个图像)
对不起,我这里不清楚
请提出任何问题。您正在调用FileInputStream上的方法。此方法读取单个字节并返回它。从:
从该输入流读取一个字节的数据。如果没有可用的输入,此方法将阻止
你有两个选择
您可以继续一次读取一个字节,在这种情况下,您需要一个循环:
int read;
while ((read = inFile.read()) != -1)
{
// process the byte
}
或者,您可以将文件的一块读入缓冲区,并使用在缓冲区上进行迭代
如果文件不是太大,您可以一次性将其读入内存
final byte[] buff = new byte[this.rawFile.length()]; // size the array
inFile.read(buff); // read the whole file in
inFile.close(); // close the file descriptor
for (int i = 0; i < buff.length; i++) // search the in-memory buffer
{
if (buff[i] == 0xFF)
{
// found marker byte ...
}
}
final byte[]buff=新字节[this.rawFile.length()];//调整数组大小
填充读取(buff);//在中读取整个文件
infle.close();//关闭文件描述符
for(int i=0;i
read()返回一个intactually@vikiiii:您不正确-read()返回字节读取(转换为int),或-1返回EOF。您可能希望通过将字节写入ByteArrayOutputStream来处理该字节。这将允许您将一个图像中的所有字节保存为一个字节[]是否可以使用fileOutputStream执行此操作?另外,有人告诉我JPEG文件以字节255 216 255 224开始(这些是字节的整数格式)。一旦找到该序列,我如何使程序停止?@user1304317:只需查看缓冲区中的更多字节。这就足够你继续下去了吗?嗯,我找不到序列255 216 255 224我发现它们都在不同的地方,不是连续的