Bom dia!
Estou fazendo um programa no qual preciso ler um arquivo binário. O primeiro conjunto de bytes é pra ser do tipo java.util.Date. Como faço para ler isso?
Bom dia!
Estou fazendo um programa no qual preciso ler um arquivo binário. O primeiro conjunto de bytes é pra ser do tipo java.util.Date. Como faço para ler isso?
Provavelmente, precisará ler o array de bytes, tirar a porção referente à data, converter em String e, só então, fazer o parse para Date.
Entendi! e quanto à essa porção referente à data, poderia especificar?
Quando se trabalha com arrays de bytes serializados, você deve ter um “mapa” dizendo algo como:
byte 0 - 10: integridade do buffer
byte 11 - 40: dados do request
byte 41 - 100: data/hora de envio
Coisas assim, entendeu?
Se você não tem, terá muitos problemas, pois, precisará usar o método científico: tentativa e erro.
Entendi! O arquivo que estou tentando ler fui eu mesmo quem gerei através de outro programa. Sei que o primeiro dado gravado é este tipo Date, mas não sei como ler!
Faria sentido então pegar os primeiros bytes encontrados no array? se sim, quantos seriam?
Grato!
A minha sugestão é: leia, transforme tudo em string e tente ver se identifica o padrão de date.
Você está serializando estes dados em java?
isto!
Teoricamente, se você serializa em java, precisa, simplesmente, deserializar.
Isto é, se você está serializando a classe br.com.teste.ClasseA, precisa ter uma classe br.com.teste.ClasseA implements Serializable para conseguir deserializar.
Todos os atributos que não estão marcados como transient serão carregados.
Dá uma olhada
beleza, valeu!
Salva a tata em ms ou seja da era UNIX ou Posix Time ou Unix epoch ou Unix Timestamp como é mais conhecido, funciona da seguinte maneira, começa a contar o ms a partir de 1 de janeiro de 1970 nesse sistema, para converter em Microsegundo, basta saber como é o calculo:
1 Dia = 24 Horas
1 Hora = 60 Minutos
1 Minuto = 60 Segundos
1 Segundo = 1000 Microsegundo
…
Como é contado em ms
o calculo é o seguinte
1000 * segundos * minutos * horas * dias
Isso é só para ter uma base como funciona, depois disso tu pode salvar como que quiser com ele, para pegar o microsegundos em java é so instanciar o Date e depois no usar o método getTime()
https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#getDate--
Ou pode simplesmente usar
System.currentTimeMillis()
E para transformar o microsegundo em data novamente, é só instanciar a classe Date com o microsegundo
https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#Date-long-