Leggere un file binario .dat

di il
5 risposte

Leggere un file binario .dat

Buonasera a tutti,

ho estrapolato dalla cartella di un gestionale che gira su linux una serie di file .dat (magazzino.dat, fatture.dat, clienti.dat ecc ecc) dove presumo contengano tutti i dati relativi al gestionale (Database). Il mio scopo è quello di poter leggere in chiaro questi file, immagazznarli all'interno di un arraylist ed infine importarli all'interno del mio database.

Ora il grosso problema è, come faccio a rendere leggibile il file binario?

Aprendolo con wordpad ho i seguenti caratteri incomprensibili:



Aprendolo con Java ottengo questo output:



Il file che ci dovrebbe essere all'interno dovrebbe essere fatto all'incirca cosi:

(NON CONOSCO LE POSIZIONI , QUESTO E' UN PURO ESEMPIO)
codice descrizione quantità prezzo ecc ecc ...
0211213 SCRIVANIA 10 170,00 ecc ecc...
0211213 ARMADIO 10 170,00 ecc ecc...
............
.......
...

Esiste secondo voi un sistema (anche non tramite Java) che mi permetta di leggere in chiaro il contenuto dei file?

Vi ringrazio anticipatamente!

Buona serata

5 Risposte

  • Re: Leggere un file binario .dat

    Il reverse engineering del file dei dati è un lavoro che prende del tempo e per cui ci vuole pazienza. Inoltre è una cosa "delicata", dovresti chiedere al "produttore" del file ... sarebbe meglio.

    I dati possono essere in binario (ad esempio singola precisione in virgola mobile per quelli con la virgola) e quindi dovresti raggrupparli (a 2 o 4 byte) e inserirli in una variabile del tipo corretto.
  • Re: Leggere un file binario .dat

    oregon ha scritto:


    Il reverse engineering del file dei dati è un lavoro che prende del tempo e per cui ci vuole pazienza. Inoltre è una cosa "delicata", dovresti chiedere al "produttore" del file ... sarebbe meglio.

    I dati possono essere in binario (ad esempio singola precisione in virgola mobile per quelli con la virgola) e quindi dovresti raggrupparli (a 2 o 4 byte) e inserirli in una variabile del tipo corretto.
    ciao Oregon grazie per la tua risposta, purtroppo non ho modo di poter contattare il produttore.. ho accesso solo al programma (in linux) che li legge. Purtroppo all'interno di questo gestionale non ci sono tools che mi permettono di effettuare stampe... l'unica mia risorsa sono questi file .dat. In pratica dovrei fare una conversione dati da un programma ad un altro...
  • Re: Leggere un file binario .dat

    Come si chiama il programma in Linux. Per quale programma devi convertirlo ?
  • Re: Leggere un file binario .dat

    Fasyrio ha scritto:


    Esiste secondo voi un sistema (anche non tramite Java) che mi permetta di leggere in chiaro il contenuto dei file?
    Purtroppo tutto questo non è affatto facile, specialmente se:
    a) non hai documentazione sul formato dei file.
    b) non hai possibilità di contattare chi ha queste specifiche (o se anche potessi ma non te le vogliono fornire).

    L'unica cosa che ti tocca fare è armarti di (molta) pazienza e cercare di scoprire come sono fatti i file con un bel po' di analisi sul loro contenuto (ti serve come minimo un hex viewer/editor, non certo un editor di testo come wordpad!).

    Ci sono parecchie questioni da scoprire e capire sul contenuto:
    - Sono tutti record di informazione a lunghezza fissa di un tot di byte? O sono a lunghezza variabile?
    - Se sono a lunghezza variabile, c'è una intestazione del record che dà informazioni sulla lunghezza e/o altro?
    - I record (che siano di lunghezza fissa o no) sono tutti perfettamente contigui uno dietro l'altro oppure esiste un meccanismo di allocazione minima con blocchi di N byte? (se l'unità minima di allocazione fosse es. 1024 byte e un record ne occupa 800, resterebbero 224 byte non usati e senza alcun significato particolare)
    - C'è un sistema di indicizzazione basato su algoritmi b-tree o cose del genere?
    - I tipi di dati come sono memorizzati? Le stringhe sono in UTF-8, ISO-8859-1, altro o nel charset predefinito della piattaforma? I dati numerici multi byte come sono memorizzati? In formato Little-Endian o Big-Endian?

    Se hai quella applicazione a tua disposizione e puoi fare prove, potresti azzerare i dati ed inserirne di nuovi. Così puoi mettere stringhe e numeri noti a te e poi andare a vedere il contenuto del file. Potrebbe essere sicuramente utile.

    Potrebbe dare anche un qualche aiuto in più se riuscissi a scoprire quale libreria/framework l'applicazione usa per scrivere quei file.


    P.S. In Java, per leggere dati "binari", BufferedReader assolutamente NON ti serve. Ti serve come minimo un (Xyz)InputStream eventualmente con al di sopra un DataInputStream, specialmente se i dati numerici fossero in Big-Endian (DataInputStream non tratta dati in Little-Endian).
  • Re: Leggere un file binario .dat

    Ciao anbin, grazie per la risposta,
    purtroppo sono domande a cui mi è difficile rispondere, per lo meno ora. Inizio il mio studio documentandomi e scaricandomi il visualizzatore che mi hai consigliato.

    Grazie a tutti per la collaborazione!
Devi accedere o registrarti per scrivere nel forum
5 risposte