Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Lettura file .dat in un programma java

  1. #1

    Lettura file .dat in un programma java

    Salve a tutti.
    Devo sviluppare un programma java che data una classifica del campionato di calcio inglese, in un file con estensione .dat, calcola la minor differenza reti (differenza tra gol fatti e gol subiti).
    Essendo la prima volta che incontro un file di tipo .dat, avrei bisogno del vostro aiuto.
    Questo è il file football.dat
    Team P W L D F A Pts
    1. Arsenal 38 26 9 3 79 - 36 87
    2. Liverpool 38 24 8 6 67 - 30 80
    3. Manchester_U 38 24 5 9 87 - 45 77
    4. Newcastle 38 21 8 9 74 - 52 71
    5. Leeds 38 18 12 8 53 - 37 66
    6. Chelsea 38 17 13 8 66 - 38 64
    7. West_Ham 38 15 8 15 48 - 57 53
    8. Aston_Villa 38 12 14 12 46 - 47 50
    9. Tottenham 38 14 8 16 49 - 53 50
    10. Blackburn 38 12 10 16 55 - 51 46

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    346
    Se il contenuto del file è testo puro, il fatto che l'estensione del file sia ".dat" invece che ".txt" non fa alcuna differenza (potrebbe avere una qualsiasi altra estensione), lo leggi esattamente come faresti con un normale file di testo.

    Il resto (quindi anche la lettura di un "normale" file di testo) lo sai fare?

  3. #3
    Sisi tutte le procedure per i file txt o csv le so fare.
    Però cercando online ho visto delle procedure particolari per i file .dat . E inoltre il testo dell'esercizio parla di colonne, quindi mi fa pensare a un approccio diverso.
    Ultima modifica di nico.pullano; 10-10-2017 a 18:44

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    346
    Se il file è quello che hai postato, lo sai già no? Non è l'estensione di un file a determinarne il contenuto, o almeno non è una regola, tu puoi tranquillamente prendere un immagine in formato "png" o "jpg" e rinominarla in modo che abbia estensione ".txt", ma poi se la apri con un editor di testo ovviamente vedi solo spazzatura.

    Ma vale anche il contrario: se prendi un file ASCII e lo rinomini in ".jpg", poi quando lo apri con un editor di testo puoi benissimo leggerne il contenuto, invece un editor di immagini che provasse ad aprire l'immagine ti darebbe errore, perché non trova quello che si aspetta di trovare (tra header e chissà quali altri caratteri ...).

    Copiando e incollando lo stralcio del tuo messaggio, e usando un normale BufferedReader, si riesce a leggere tranquillamente la tabella, poi devi ovviamente costruirci il tuo programma attorno ...

  5. #5
    Il problema arriva quando però devo memorizzare nel mio programma il nome della squadra con la differenza reti minore.
    In questo caso non posso utilizzare nessun carattere per splittare. Quindi penso che ci sia un modo particolare per leggere il file. Sapresti un metodo diverso, particolare per i file .dat ? Grazie mille.

  6. #6
    Quote Originariamente inviata da nico.pullano Visualizza il messaggio
    Però cercando online ho visto delle procedure particolari per i file .dat .
    Un file con estensione .dat di per sé non vuol dire nulla (!) di preciso e univoco ... se non che (ragionevolmente) è solo un file di "dati" e basta.
    Quindi dire "procedure particolari per i file .dat" non vuol dire nulla. Il file potrebbe avere una qualunque struttura, essere testuale puro, binario o un mix.

    Sai che è un file di testo? E sai che è strutturato a righe? Allora si legge innanzitutto "a righe", con il readLine() di BufferedReader o al limite con il nextLine() di Scanner.
    Poi se i dati sono a colonne fisse, si estraggono i dati tramite un substring. Se no e ci sono delimitatori tramite varie tecniche di tokenizzazione.
    Andrea, www.andbin.net – Senior Java developer – SCJP 5 (91%) – SCWCD 5 (94%)
    Il mio blog sulla programmazione

  7. #7
    Va bene, provo con subString. Grazie a entrambi.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    346
    Quote Originariamente inviata da nico.pullano Visualizza il messaggio
    Il problema arriva quando però devo memorizzare nel mio programma il nome della squadra con la differenza reti minore.
    In questo caso non posso utilizzare nessun carattere per splittare.
    Quote Originariamente inviata da nico.pullano Visualizza il messaggio
    Va bene, provo con subString
    [...]
    Attento che @andbin ha parlato di usare subString quando le colonne sono a dimensione fissa, non è questo il caso!

    Puoi tranquillamente splittare ogni linea usando lo spazio, il fatto che per separare gol fatti e gol subiti ci sia la sequenza " - " vuol dire solo che dovrai ignorare l'elemento all'indice 7 dell'array di stringhe che split fornisce come risultato (che conterrà "-"), tra l'altro anche il primo elemento di ogni linea ("1.", "2." etc.) è abbastanza inutile, quindi anche quello probabilmente lo ignorerai.

    Volendo puoi anche usare un'espressione regolare per splittare la stringa, per considerare tutti i possibili caratteri di delimitazione: come indica la documentazione del metodo split di String:

    public String[] split(String regex)


    Splits this string around matches of the given regular expression.
    Quindi in teoria puoi dividere il file sia per " " che per " - ".

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2017 vBulletin Solutions, Inc. All rights reserved.