Ao escrever o primeiro arquivo txt "filme.txt" , como a criação do File está dentro do while ele não grava todos os filmes procurados ele grava somente o último porque ele dá um new FileWriter assim resetando a lista , gravando somente o último . Tirando FileWriter escrita = new FileWriter("filmes.txt") para fora da estrutura de repetição assim como escrita.close() , o arquivo txt irá gravar todas as procuras feitas
` String busca = "";
List<Title> titles = new ArrayList<>();
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.setPrettyPrinting()
.create();
FileWriter escrita = new FileWriter("filmes.txt");
while (!busca.equalsIgnoreCase("sair")) {
Scanner leitura = new Scanner(System.in);
System.out.println("Digite um filme : ");
busca= (leitura.nextLine()).replace(" ", "+");
if(busca.equalsIgnoreCase("sair"))
{
break;
}
String endereco = "https://omdbapi.com/?t=" + busca + "&apikey=1514f43c";
try {
HttpClient client = java.net.http.HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(endereco)).build();
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
TituloOmdb tituloOmdb = gson.fromJson(json, TituloOmdb.class);
Title meutitulo = new Title(tituloOmdb);
escrita.write(meutitulo.toString());
titles.add(meutitulo);
} catch (NumberFormatException e) {
System.out.println("Aconteceu um erro : " + e.getMessage());
} catch (IllegalArgumentException e) {
System.out.println("Verifique o endereço : " + e.getMessage());
} catch (ErroDeConversaoDeAnoException e) {
System.out.println("Exceção : " + e.getMessage());
}
}
escrita.close();
System.out.println(titles);
FileWriter escrita2 = new FileWriter("filmes.json");
escrita2.write(gson.toJson(titles));
escrita.close();
System.out.println("O programa finalizou corretamente!");`