Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Resolução do Desafio

package br.com.alura.screenmatch;


import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        String conteudo = "Conteúdo a ser gravado no arquivo.";
        try {
            FileWriter writer = new FileWriter("arquivo.txt");
            writer.write(conteudo);
            writer.close();
            System.out.println("Dados gravados com sucesso.");
        } catch (IOException e) {
            System.out.println("Erro ao gravar o arquivo!");;
            e.printStackTrace();
        }

        Titulos titulo = new Titulos("Interistelar", 2026, 169);

         Gson gson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
                .setPrettyPrinting()
                .create();

        String json = gson.toJson(titulo);
        System.out.println(json);

        Carro carro = new Carro("JJF1111",2026, "vermelho");

        json = gson.toJson(carro);
        System.out.println(json);

    }
}
package br.com.alura.screenmatch;

public class Carro {
    private String placa;
    private int anoDeFabricacao;
    private String cor;

    public Carro(String placa, int anoDeFabricacao, String cor) {
        this.placa = placa;
        this.anoDeFabricacao = anoDeFabricacao;
        this.cor = cor;
    }
}
package br.com.alura.screenmatch;

public class Titulos {
    private String nome;
    private int anoDeLancamento;
    private int duracaoEmMinutos;

    public Titulos(String nome, int anoDeLancamento, int duracaoEmMinutos) {
        this.nome = nome;
        this.anoDeLancamento = anoDeLancamento;
        this.duracaoEmMinutos = duracaoEmMinutos;
    }
}
1 resposta

Fala, Smalley! Tudo bom?

Agradeço por compartilhar sua solução no fórum!

Curti demais como explorou o FileWriter para manipulação de arquivos com Java, compreendeu perfeitamente a importância do Gson para serializar objetos em JSON e utilizou bem o FieldNamingPolicy para personalizar a saída.

Algo bem legal para complementar é usar o try-with-resources ao gravar o arquivo, garantindo que o recurso seja fechado automaticamente mesmo em caso de erro. Assim:

try (FileWriter writer = new FileWriter("arquivo.txt")) {
    writer.write(conteudo);
    System.out.println("Dados gravados com sucesso.");
} catch (IOException e) {
    System.out.println("Erro ao gravar o arquivo!");
    e.printStackTrace();
}

Isso faz com que o código fique mais seguro e menos sujeito a vazamentos de recursos.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Validação: verificar se o arquivo existe ou se há permissão de escrita antes de tentar gravar.
  • Reutilização: encapsular a lógica de serialização em uma classe utilitária para reaproveitar em outros objetos.
  • Separação de responsabilidades: criar métodos específicos para salvar em arquivo e para converter em JSON.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você pretende evoluir esse projeto para salvar os objetos diretamente em arquivos JSON ou prefere manter a gravação em texto simples e apenas exibir o JSON no console?

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!