Grave o byte no arquivo em Java

Rupam Yadav 12 outubro 2023
  1. Usando FileOutputStream para gravar byte em arquivo em Java
  2. Usando java.nio.file para gravar byte no arquivo
  3. Usando a biblioteca Apache Commons IO para escrever bytes em arquivos em Java
Grave o byte no arquivo em Java

Este programa demonstra como gravar um array de bytes em um arquivo em Java. Esta tarefa pode ser executada usando FileOutputStream e usando algumas bibliotecas mencionadas neste artigo.

Usando FileOutputStream para gravar byte em arquivo em Java

A classe FileOutputStream em Java é um fluxo de saída usado para gravar dados ou fluxo de bytes em um arquivo. O construtor FileOutputStream(File file) cria um fluxo de saída de arquivo para gravar no arquivo representado pelo objeto File file, que criamos no código abaixo.

A variável s do tipo String é passada para o método getBytes(), que converte a string em uma sequência de bytes e retorna um array de bytes. O método write() leva a matriz de bytes como um argumento e grava b.length bytes do array de bytes b para este fluxo de saída de arquivo.

Um arquivo com a extensão .txt é criado no caminho fornecido e, se o abrirmos, podemos ver o mesmo conteúdo da string armazenada na variável s.

import java.io.File;
import java.io.FileOutputStream;

public class ByteToFile {
  public static void main(String args[]) {
    File file = new File("/Users/john/Desktop/demo.txt");
    try {
      FileOutputStream fout = new FileOutputStream(file);
      String s = "Example of Java program to write Bytes using ByteStream.";
      byte b[] = s.getBytes();
      fout.write(b);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Usando java.nio.file para gravar byte no arquivo

O pacote Java NIO ( New I/O) consiste em métodos estáticos que funcionam em arquivos, diretórios e principalmente no objeto Path. O Path.get() é um método estático que converte uma sequência de strings ou uma string de caminho em um Path. Ele simplesmente chama FileSystems.getDefault().getPath().

Assim, podemos escrever um array de bytes b em um arquivo usando o método Files.write() passando o caminho para o arquivo e a matriz de bytes convertida de uma string.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class ByteToFile {
  public static void main(String args[]) {
    Path p = Paths.get("/Users/john/Desktop/demo.txt");
    try {
      String s = "Write byte array to file using java.nio";
      byte b[] = s.getBytes();
      Files.write(p, b);
    } catch (IOException ex) {
      System.err.format("I/O Error when copying file");
    }
  }
}

Usando a biblioteca Apache Commons IO para escrever bytes em arquivos em Java

A dependência do maven para esta biblioteca é mencionada abaixo.

   <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
   </dependency>

A biblioteca Apache Commons IO tem a classe FilesUtils, tem o método writeByteArrayToFile(). Este método pega o caminho de destino e os dados binários que estamos escrevendo. Se nosso diretório ou arquivo de destino não existir, eles serão criados. Se o arquivo existir, ele será truncado antes da gravação.

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.FileUtils;

public class ByteToFile {
  public static void main(String args[]) {
    {
      File file = new File("doc.txt");
      byte[] data =
          "Here, we describe the general principles of 																									 photosynthesis"
              .getBytes(StandardCharsets.UTF_8);
      try {
        FileUtils.writeByteArrayToFile(file, data);
        System.out.println("Successfully written data to the file");
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}

Produção:

Successfully written data to the file
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - Java Byte

Artigo relacionado - Java File