Bom dia!
Estou desenvolvendo um trabalho em Java utilizando os pacotes NIO e IO para fazer a leitura de arquivos .dat que contém dados sobre a previsão meteorológica de cada dia. O objetivo do programa é ler estes arquivos e criar um novo arquivo .dat convertendo os dados do arquivo principal em arquivos de Objeto (serializando). O novo arquivo deve ter como nome o mês e o ano respectivo dos dados no formato “MM-yyyy”.
Eis o problema: Quando tento carregar o arquivo principal, ocorre um erro de Unparseable Date. Já tentei de algumas outras maneiras solucionar este problema, mas sem sucesso. Sou iniciante em java, e qualquer outra dica referente ao resto do código é bem-vinda.
Segue o algoritmo (Estou fazendo em JFrame):
JFileChooser jfc = new JFileChooser();
int returnval = jfc.showOpenDialog(null);
int lido = 0;
int ultimomes = -1;
if (returnval == JFileChooser.APPROVE_OPTION) {
File file = jfc.getSelectedFile();
try {
FileInputStream fs = new FileInputStream(file);
BufferedInputStream bs = new BufferedInputStream(fs);
DataInputStream ds = new DataInputStream(bs);
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
while (lido != -1) {
String readData = br.readLine();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = sdf.parse(readData);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
String saidavento = String.valueOf(ds.readChar() + ds.readChar());
int velocidadevento = ds.readInt();
int pluviometro = ds.readInt();
double temperatura = ds.readDouble();
ClimaDoDia clima = new ClimaDoDia(date, saidavento, velocidadevento, pluviometro, temperatura);
FileOutputStream primeiro = new FileOutputStream(cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.MONTH) + ".dat");
if (cal.get(Calendar.MONTH) != ultimomes) {
FileOutputStream proximo = new FileOutputStream(cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.MONTH) + ".dat");
ObjectOutputStream gravar = new ObjectOutputStream(proximo);
gravar.writeObject(clima);
gravar.flush();
gravar.close();
ultimomes = cal.get(Calendar.MONTH);
} else {
ObjectOutputStream gravar = new ObjectOutputStream(primeiro);
gravar.writeObject(clima);
gravar.flush();
gravar.close();
ultimomes = cal.get(Calendar.MONTH);
}
lido = br.read();
}
} catch (FileNotFoundException ex) {
Logger.getLogger(ClimaFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ClimaFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (ParseException ex) {
Logger.getLogger(ClimaFrame.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
JOptionPane.showMessageDialog(null, "Usuário cancelou a operação!");
}