Pessoal,
Eu preciso coletar alguns dados de um arquivo TXT dentro de um determinada DATA. Exemplo:
Buscar informações entre 01/03/12 a 15/03/12, mas nao sei como fazer. alguem poderia me ajudar ?
Obrigado,
Pessoal,
Eu preciso coletar alguns dados de um arquivo TXT dentro de um determinada DATA. Exemplo:
Buscar informações entre 01/03/12 a 15/03/12, mas nao sei como fazer. alguem poderia me ajudar ?
Obrigado,
como esta esse arquivo? posta um exemplo.
o que vc nao consegue fazer? ler o arquivo? converter a data? manipular intervalos de datas?
mauricio,
O Meu arquivo esta da seguinte forma:
030312 011055 020312 CTMG SEL208I JOB BGBJ0S13 BGBG0S13/16356 OID=71A9I ENDED "OK"
030312 011055 020312 CTMG SEL208I JOB BGBJ0S14 BGBG0S14/16357 OID=71A9J ENDED "OK"
030312 011055 020312 CTMG SEL208I JOB BGBJ0S15 BGBG0S15/16358 OID=71A9K ENDED "OK"
030312 011055 030312 CTMG SEL208I JOB BGBJ0S16 BGBG0S16/16359 OID=71A9L ENDED "OK"
030312 011055 030312 CTMG SEL208I JOB BGBJ0S17 BGBG0S17/16360 OID=71A9M ENDED "OK"
030312 011055 040312 CTMG SEL208I JOB BGBJ0S18 BGBG0S18/16361 OID=71A9N ENDED "OK"
030312 011055 040312 CTMG SEL208I JOB BGBJ0S19 BGBG0S19/16362 OID=71A9O ENDED "OK"
030312 011055 040312 CTMG SEL208I JOB BGBJ0S20 BGBG0S20/16363 OID=71A9P ENDED "OK"
030312 011055 040312 CTMG SEL208I JOB BGBJ0S21 BGBG0S21/16364 OID=71A9Q ENDED "OK"
030312 011055 040312 CTMG SEL208I JOB BGBJ0S22 BGBG0S22/16365 OID=71A9R ENDED "OK"
Então, ler o arquivo, tranquilo, e a conversão da data, tranquilo…veja se esta certo, fiz um teste convertendo a data que esta em string para Date
public void TesteDeData (String odate, String odate1){
Date dt_inicio = new Date();
Date dt_fim = new Date();
SimpleDateFormat df = new SimpleDateFormat("ddmmyy");
SimpleDateFormat df1 = new SimpleDateFormat("ddmmyy");
try{
dt_inicio = df.parse(odate);
dt_fim = df1.parse(odate1);
}catch(ParseException x){
x.printStackTrace();
}
So que ai parei…nao sei como fazer para que quando for buscar os dados, seja lido o intervalo de uma data a outra e me retorne os dados.
Para a leitura dos dados, faço o seguinte:
// LOOP PARA PERCORRER O ARQUIVO ATÈ O FIM DOS REGISTROS
while((leitor=reader.readLine() ) != null){
// SEPARACAO DO ARQUIVO EM COLUNAS
String[] novoArq = leitor.split(" ");
//*************************************************************************************************************************
// PROCESSO DE CAPTURA DOS ABENDS SELECIONADOS *
//*************************************************************************************************************************
// CAPTURA APENAS AS INFORMACOES DOS ERROS
if(leitor.contains("ABENDED") || leitor.contains("FAILED") ||
leitor.contains("NOT CATLGD 2") || leitor.contains("UNEXPLA")){
// FILTRA APENAS JOBS COM 8 POSICOES
if(novoArq[13].length() > 8){
// AGILIZA O PROCESSO DE CAPTURA DOS DADOS PARA INSERIR EM COLUNAS
StringBuilder linhaSaida1 = new StringBuilder();
//SISTEMA
linhaSaida1.append(novoArq[13].substring(0,2)).append(" ");
// DATA DE PROCESSAMENTO
linhaSaida1.append(novoArq[2]).append(" ");
// HORA
linhaSaida1.append(novoArq[3]).append(" ");
// ODATE
linhaSaida1.append(novoArq[4]).append(" ");
// JOB
linhaSaida1.append(novoArq[13].substring(0,8)).append(" ");
// JOBID
linhaSaida1.append(novoArq[13].split("/")[1]).append(" ");
// UID
linhaSaida1.append(novoArq[14].substring(4,9)).append(" ");
// OCORRENCIAS
if (leitor.contains("UNEXPLA")){
linhaSaida1.append(novoArq[16] + " " + novoArq[18]);
} else if (leitor.contains("NOT CATLGD 2")){
linhaSaida1.append(novoArq[15] + " " + novoArq[16] + " " + novoArq[17] + " " + novoArq[18] + " " + novoArq[19]);
} else if (leitor.contains("FAILED")){
linhaSaida1.append(novoArq[15] + " " + novoArq[16] + " " + novoArq[17]);
} else if (leitor.contains("ABENDED")){
linhaSaida1.append(novoArq[15] + " " + novoArq[17]);
}
// ADICIONA AS INFORMACOES NO ARRAY DE ABEND
errosArquivo.add(linhaSaida1.toString());
Então, uso este codigo acima para dividir o arquivo em colunas e assim obter os dados que preciso. por isso que preciso obter estes dados mas dentro de um intervalo de datas, pois se executá-lo assim, ele pega todas as datas até datas anteriores que não preciso.
Espero que tenha conseguido explicar.
Obrigado
manipular dentro do arquivo eh muito trabalhoso, seria melhor vc trazer todo ele pra memoria e manipular com joda-time. fica mais simples.
Legal Mauricio, porém como faço isso ?.. pode me dar um exemplo ?
nunca usei joda-time entao vou ficar devendo, mas vejo muitas pessoas sábias do forum dizendo que eh simples.
de uma pesquisada em joda-time que vc acha um monte de tutorial ensinando.
Beleza Mauricio, não tem problema, te agradeço pelo HELP…
vou tentar dar uma procurada sobre esse Joda-Time, realmente da forma que estou trabalhando com os dados é bem complexo mesmo…
talvez ate mude de estrutura e começe a usar um banco de dados como auxiliar…acredito que fique até mais fácil…
Abs,
dá uma lida aqui pode te ajudar bastante
http://www.ibm.com/developerworks/java/library/j-jodatime/index.html
n to com tempo para mostrar o mais viavel…olha lá
Valeu Riquinho, vou ler sim…
Beleza Mauricio, não tem problema, te agradeço pelo HELP…vou tentar dar uma procurada sobre esse Joda-Time, realmente da forma que estou trabalhando com os dados é bem complexo mesmo…
talvez ate mude de estrutura e começe a usar um banco de dados como auxiliar…acredito que fique até mais fácil…
Abs,
cara se vc puder usar banco auxiliar vai melhor uns 1000 por cento. usa sqlite pra gravar e depois pra pegar intervalo no banco de dados eh muito simples!
Usa SQLITE que fica muito mais simples a gravação/leitura/manipulação dos dados, onde sua consulta seria um simples SELECT com BETWEEN.