Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, gostaria de falar neste post sobre uma coisa bem bacana que são os bytes e como utilizá-los em uma leitura de arquivo.
Java nos permite trabalhar com bytes colocando a mão diretamente neles e os usando como desejarmos, em linguagens simplificadas, isso é ocultado e tudo se faz no escuro, apenas retornando algo.
Veja como é fácil criar um array de bytes e determinar previamente o tamanho
byte[] bytes = new byte[1024];
Lembram da famosa função strlen do php? Para treinarmos o uso de bytes em Java, vamos reinventar a roda apenas para fins de estudo, poderemos contar os bytes como contamos o numero de elementos em um array normal.
byte[] bytes = "imasters".getBytes();
System.out.println(bytes.length); // 8
Em uma situação real use String.length();
Copiando um grande arquivo e lendo uma determinada quantidade de bytes por vez.
Para isso utilizaremos:
java.io.BufferedInputStream
java.io.BufferedOutputStream
java.io.FileInputStream
java.io.FileOutputStream
Exceções:
java.io.IOException
Procura ai aquele filme de quase 2gb ou o instalador de um jogo super pesado e vamos copiá-lo:
String largeFile = "/path/to/...",
largeFileCopy = "/path/to/...";
// Criamos um array para 4096 bytes, determina o quanto será lido
byte[] bytes = new byte[4096];
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
// Java I/O;
input = new BufferedInputStream(new FileInputStream(largeFile));
output = new BufferedOutputStream(new FileOutputStream(largeFileCopy));
int read = 0;
while ((read = input.read(bytes)) != -1) {
output.write(bytes, 0, read);
}
} e.printStackTrace();
} if (output != null) {
try {
output.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
if (input != null) {
try {
input.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
Façam seus testes, se desejarem, postem os resultados ;)