A: 

What if you flush your output with flush (from OutputStream)?

Aif
@Alf - it should make no difference, since a FileOutputStream is not buffered. IIRC, the `flush()` method is implemented as a no-op in this case.
Stephen C
+2  A: 

Firstly, unless something really weird is going on, "/dev/fb0" is a device file not a pipe. [This is a nitpick, but if you use the wrong terminology, 1) people won't understand you and 2) you will have difficulty searching for answers.]

Secondly, this looks like a weird way to interact with a framebuffer!!

I suspect that the problem is that you need to do the equivalent of a POSIX lseek call to set the stream position to zero each time you draw a frame. I've found two ways to do this:

Stephen C
+1  A: 

Changing the Output Stream to RandomAccessFile fixed all of my problems. I bet the stream wasn't working because it can't seek to position 0. Thanks to all who replied.

beta
Don't forget to accept the best answer by clicking on the green check outline to the left of the answer. This helps others by confirming that solution worked for you.
Greg Hewgill