Bom dia, prezados colegas. Lendo as questões sobre problemas com strings em softwares maiores, apresentadas por @hugokotsubo e @staroski no tópico Como fazer programa de digítos iguais? me surgiu uma curiosidade:
Existe uma rede de aviação simulada, chamada IVAO, onde pessoas podem se conectar para simular como pilotos ou controladores de tráfego aéreo. Inclusive dá para ver em tempo real as pessoas conectadas em:
Esses dados são oriundos de um arquivo de log que é atualizado a cada 3 minutos, com informações instantâneas, disponível em:
https://api.ivao.aero/getdata/whazzup/whazzup.txt
As informações são separadas por “:” (dois pontos). A minha intenção, por hobby, é pegar esses arquivos, ao longo de algumas horas (duração de alguns eventos aéreos específicos), para coletar as informações e elaborar relatórios do tipo “piloto P voou X horas de A para B”, “controlador C passou Y horas no serviço na estação Z”. Isso vai ajudar o pessoal do Depto de Eventos a conceder as medalhas a quem estava participando do evento.
Para isso preciso separar os dados e analisá-los, e a cada nova coleta de log (3 minutos depois), verificar se o Piloto P (ou o Controlador C) ainda está online, e se estiver, somar o tempo. Essa operação se repete, óbvio, até o final da conexão, para poder ter o tempo total de voo ou de controle de tráfego aéreo.
O que eu pensei em fazer é:
-
Coletar os dados, salvando os arquivos em disco (software separado);
-
Abrir os arquivos. Coletar o conteúdo para uma String ou StringBuilder;
-
Separar os parâmetros com:
StringBuilder conteudoDoArquivo = new StringBuilder(); conteudoDoArquivo.append("texto do arquivo"); String[] matrizDados = conteudoDoArquivo.toString().split(":");
-
Atribuir os campos da matriz criada a um objeto (um objeto por pessoa conectada);
-
Se aquela conexão já existe, apenas incrementar o tempo online;
-
Ao final da análise dos arquivos, coletar algumas informações da página de perfil do usuário (como o nível de piloto e quais medalhas possui) e gerar um relatório pro Excel.
===========================================
A MINHA DÚVIDA É: qual a melhor forma de tratar essas informações, do item 3?
Existe algum procedimento que vocês recomendariam, que envolva menor gasto de memória e seja mais rápido? Ou o caminho é o tratamento convencional das strings?
===========================================
Desde já, muito obrigado pela ajuda.