2 ответов:
Считывает из входного потока и записывает вByteArrayOutputStream , затем вызывает его
toByteArray()для получения массива байтов.СоздайтеByteArrayInputStream вокруг массива байтов для чтения из него.
Вот быстрый тест:
import java.io.*; public class Test { public static void main(String[] arg) throws Throwable { File f = new File(arg[0]); InputStream in = new FileInputStream(f); byte[] buff = new byte[8000]; int bytesRead = 0; ByteArrayOutputStream bao = new ByteArrayOutputStream(); while((bytesRead = in.read(buff)) != -1) { bao.write(buff, 0, bytesRead); } byte[] data = bao.toByteArray(); ByteArrayInputStream bin = new ByteArrayInputStream(data); System.out.println(bin.available()); } }
Или сначала преобразуйте его в массив байтов, а затем в bytearrayinputstream.
File f = new File(arg[0]); InputStream in = new FileInputStream(f); // convert the inpustream to a byte array byte[] buf = null; try { buf = new byte[in.available()]; while (in.read(buf) != -1) { } } catch (Exception e) { System.out.println("Got exception while is -> bytearr conversion: " + e); } // now convert it to a bytearrayinputstream ByteArrayInputStream bin = new ByteArrayInputStream(buf);
Comments