0

我正在尝试读取 .raw 文件以查找一些“损坏”的图像。我已经尝试了一切。据我了解,以下应该有效

public void readFile(){
FileInputStream inFile = new FileInputStream(this.rawFile);
System.out.println(inFile.read());
}

但只打印一个字节。我需要读取所有这些并查找 255 的字节(表示新图像的开始)并将前 255 的字节保存到下一个 255(下一个图像)到 .jpg

对不起,如果我在这里不清楚。

请提出您可能有的任何问题。

4

1 回答 1

1

您正在调用read()FileInputStream 上的方法。此方法读取单个字节并返回它。从Javadoc

从此输入流中读取一个字节的数据。如果还没有输入可用,则此方法会阻塞。

你有几个选择...

您可以继续一次读取一个字节,在这种情况下,您需要一个循环:

int read;

while ((read = inFile.read()) != -1)
{
  // process the byte
}

或者,您可以将文件的一部分读入缓冲区并使用read(byte[],int,int).

如果文件不是太大,您可以一次将其读入内存。

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 ...
  }
}
于 2012-04-16T02:10:18.443 回答