package com.netthreads.libgdx.sound.pitch;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
/**
* Can be used to hijack the file read to get the data.
*
* Unused at the moment.
*
*/
public class InStreamFileHandle extends FileHandle
{
private FileHandle fileHandle;
private byte[] data;
public InStreamFileHandle(FileHandle fileHandle)
{
this.fileHandle = fileHandle;
data = null;
}
@Override
public InputStream read()
{
InputStream inputStream = fileHandle.read();
inputStream.mark(0);
try
{
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
int value = 0xFF;
while (value > 0)
{
value = inputStream.read();
if (value > 0)
{
arrayOutputStream.write(value);
}
}
arrayOutputStream.flush();
// Make byte array of stream contents.
data = arrayOutputStream.toByteArray();
// Reset input stream.
inputStream.reset();
}
catch (IOException e)
{
Gdx.app.log("InStreamFileHandle", "Error reading stream, " + e);
}
return inputStream;
}
public byte[] data()
{
return data;
}
}