Bom, fiz de uma forma diferente, invez de colocar para criar cada arquivo.json diferente para cada CEP eu criei um Json para guardar todos os CEPs digitados, e fiz um while na class principal para colocar mais de uma vez algum CEP, e não criei a classe do Write como foi dito no curso, queria saber se está bem feito o codigo, se tem algo para melhorar.
Classe Principal:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Menu {
public static void main(String[] args) throws IOException, InterruptedException {
Scanner sc = new Scanner(System.in);
String buscar = "";
List<ViaCEP> ceps = new ArrayList<>();
FileWriter write = new FileWriter("ceps.json");
Gson gson = new GsonBuilder().setPrettyPrinting().create();
while (!buscar.equalsIgnoreCase("sair")) {
ViaCEP cep = new ViaCEP();
System.out.println("Digite qualquer coisa para continuar ou SAIR para sair ");
if(sc.nextLine().equalsIgnoreCase("sair")) {
break;
}
System.out.println("Digite seu CEP ");
cep.setCep(sc.nextLine());
try {
Endereco novoEndereco = cep.buscaEndereco(cep.getCep());
System.out.println(novoEndereco);;
write.write(gson.toJson(novoEndereco));
} catch (JsonSyntaxException e) {
System.out.println("Erro " + e.getMessage());
}
}
write.close();
}
}
Classe ViaCEP
package br.com.alura.cep.api;
import com.google.gson.Gson;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ViaCEP {
private String cep;
public Endereco buscaEndereco(String cep) {
URI endereco = URI.create ("https://viacep.com.br/ws/" + getCep() + "/json");
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(endereco)
.build();
HttpResponse<String> response = null;
try {
response = HttpClient
.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
} catch (IOException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return new Gson().fromJson(response.body(), Endereco.class);
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
}