Converter Inputstream para Byte Array em Java
-
Converter InputStream em Byte Array utilizando o método
readAllBytes()
em Java -
Converter InputStream em Byte Array utilizando o método
toByteArray()
em Java -
Converter InputStream em Byte Array utilizando o método
write()
em Java -
Converter InputStream em Byte Array Utilizando o método
readAllBytes()
em Java -
Converter InputStream em Byte Array utilizando o método
readFully()
em Java -
Converter InputStream para Byte Array utilizando o método
getBytes()
em Java - Converter InputStream para Byte Array utilizando o código personalizado em Java
-
Converter InputStream em Byte Array utilizando o método
toByteArray()
em Java
Este tutorial introduz como converter inputstream para matriz de bytes em Java e lista alguns exemplos de códigos para compreender o tópico.
InputStream
é uma classe abstracta e superclasse de todas as classes que representam um fluxo de entrada de bytes. Java utiliza um fluxo de entrada para ler dados de qualquer fonte como ficheiro, array, etc. Veremos então como converter este fluxo para matriz de bytes utilizando alguns métodos incorporados e código personalizado em Java.
Neste artigo, utilizaremos vários métodos incorporados tais como toByteArray()
, readAllBytes()
, readFully()
, getBytes()
, write()
, etc. e um ficheiro de texto abc.txt
é utilizado para ler dados. Este ficheiro de texto contém uma única frase, Welcome to Delfstack
, que será lida e convertida num array de bytes, que pode ainda ser convertida numa string para verificar o resultado desejado.
Converter InputStream em Byte Array utilizando o método readAllBytes()
em Java
Podemos utilizar o método readAllBytes()
para obter todos os dados para um array de bytes. Este método devolve um array de bytes que pode ser passada mais adiante para o construtor do String
para imprimir dados textuais.
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
InputStream ins = new FileInputStream("abc.txt");
byte[] byteArray = ins.readAllBytes();
System.out.println(new String(byteArray));
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
Welcome to Delfstack
Converter InputStream em Byte Array utilizando o método toByteArray()
em Java
Se trabalhar na biblioteca Apache, pode utilizar o método toByteArray()
da classe IOUtils
para obter todos os dados no array de bytes. Este método devolve um array de bytes que pode ser passado para o construtor do String
para imprimir os dados textuais.
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
public class SimpleTesting {
public static void main(String[] args) {
try {
InputStream ins = new FileInputStream("abc.txt");
byte[] bytes = IOUtils.toByteArray(ins);
System.out.println(new String(bytes));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
Welcome to Delftstack
Converter InputStream em Byte Array utilizando o método write()
em Java
Podemos utilizar o método write()
da classe ByteArrayOutputStream
para obter todos os dados para um array de bytes. Este método devolve um array de bytes que pode ser passado para o construtor String
para imprimir dados textuais.
package myjavaproject;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
InputStream ins = new FileInputStream("abc.txt");
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int read;
byte[] data = new byte[16384];
while ((read = ins.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, read);
}
System.out.println(new String(data));
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
Welcome to Delfstack
Converter InputStream em Byte Array Utilizando o método readAllBytes()
em Java
Podemos utilizar o método readAllBytes()
da classe DataInputStream
para converter todos os dados num array de bytes. Este método devolve um array de bytes que pode ser passado mais adiante para o construtor String
para imprimir dados textuais.
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
DataInputStream dis = new DataInputStream(new FileInputStream(file));
byte[] bytes = dis.readAllBytes();
System.out.println(new String(bytes));
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
Welcome to Delftstack
Converter InputStream em Byte Array utilizando o método readFully()
em Java
Podemos utilizar o método readFully()
da classe RandomAccessFile
para converter todos os dados num array de bytes. Este método retorna um array de bytes, que pode ser passado para o construtor String
para imprimir dados textuais.
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
InputStream is = new FileInputStream(file);
RandomAccessFile raf = new RandomAccessFile(file, "r");
byte[] bytesData = new byte[(int) raf.length()];
raf.readFully(bytesData);
System.out.println(new String(bytesData));
is.close();
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
Welcome to Delfstack
Converter InputStream para Byte Array utilizando o método getBytes()
em Java
Podemos utilizar o método getBytes()
da classe String
para converter todos os dados em um array de bytes. Este método devolve um array de bytes que pode ser passado para o construtor da classe String
para imprimir dados textuais.
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.stream.Collectors;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
byte[] bytesData = {};
InputStream is = new FileInputStream(file);
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(is))) {
bytesData = buffer.lines().collect(Collectors.joining("\n")).getBytes();
}
System.out.println(new String(bytesData));
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
Welcome to Delftstack
Converter InputStream para Byte Array utilizando o código personalizado em Java
Se não quiser usar nenhum método integrado, use este código personalizado para converter o fluxo de entrada em um array de bytes. Este código devolve um array de bytes que pode ser passado mais adiante para o construtor String
para imprimir dados textuais.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
byte[] bytesData = {};
bytesData = getBytesFromFile(new File(file));
System.out.println(new String(bytesData));
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file);
long length = file.length();
byte[] bytes = new byte[(int) length];
int offset = 0;
int numRead = 0;
while (
offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += numRead;
}
if (offset < bytes.length) {
throw new IOException("Could not read file " + file.getName());
}
return bytes;
}
}
Resultado:
Welcome to Delfstack
Converter InputStream em Byte Array utilizando o método toByteArray()
em Java
Podemos utilizar o método toByteArray()
da classe ByteArrayOutputStream
para converter todos os dados num array de bytes. Este método devolve um array de bytes que pode ser passado mais adiante para o construtor String
para imprimir dados textuais.
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
InputStream is = new FileInputStream(file);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
is.transferTo(byteArrayOutputStream);
byte[] bytesData = byteArrayOutputStream.toByteArray();
System.out.println(new String(bytesData));
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
Welcome to Delfstack