CSV , eller kommadelte , blir filene ofte brukt som et universelt format for utveksling av enkle data , spesielt mellom regneark . Formatet er enkel. Ta en tabell med data og plassere navnet på hver kolonne på første linje , med hvert navn atskilt fra de andre med komma . Deretter går du gjennom hele bordet , plassere hver rad på en linje med hver kolonne separert med komma . Java har ikke et innebygd verktøy for å lese CSV-filer , men det bør ikke stoppe deg fra å bruke dem i din Java-program . Den forenklede formatet gjør det enkelt å lage din egen Java CSV -filen parser . Instruksjoner
en
Opprett en ny klasse kalt CSVParser.java ved å lime inn følgende i en tom tekstfil : en
import java.io.File , import java.io.FileNotFoundException ; import java.util.ArrayList , import java.util.scanner , import javax.swing.table.DefaultTableModel , import javax.swing.table.TableModel ;
public class CSVParser { }
2 < p> Lim inn følgende "parse "-metoden i den mellom brakettene i klassen : en
public static TableModel parse (File f) kaster FileNotFoundException {
ArrayList overskrifter = new ArrayList < ; String > (); ArrayList oneDdata = new ArrayList ();
//Få hodene av table.Scanner lineScan = new Scanner ( f); Scanner s = new Scanner ( lineScan.nextLine ( )); s.useDelimiter ( " ,") , mens ( s.hasNext ( ) ) { headers.add ( s.next ( )); }
//Gå gjennom hver linje i tabellen og legge til hver celle til ArrayListwhile ( lineScan.hasNextLine ( ) ) { s = new Scanner ( lineScan.nextLine ( )); s.useDelimiter ( " *" ) , mens ( s.hasNext ( ) ) { oneDdata.add ( s.next ( )); } } String [] [ ] data = new String [ headers.size () ] [ oneDdata.size () /headers.size ( ) ]; //flytte data inn i en vanilje matrise slik at den kan bli satt i en bordet.For (int x = 0 , X < headers.size (); x + +) { for (int y = 0.. y < data [ 0 ] lengde , y + + ) { data [ x ] [y ] = oneDdata.remove ( 0 ); } } //Lag en tabell og retur it.return ny DefaultTableModel ( data , headers.toArray ( ));
}
3
Lim inn følgende viktigste metoden like under parse metoden fra Trinn 2 : en
public static void main ( String [] args ) throws FileNotFoundException { //Ring parse metoden og sette resultatene i en table.TableModel t = CSVParser.parse (new File ( " test.csv "));
//Skriv ut alle kolonnene i tabellen , etterfulgt av en ny linjen.For ( int x = 0 ; x < t.getColumnCount (); x + + ) { System.out.print ( t.getColumnName ( x ) + "") ;} System.out.println ();
< p> //Skriv ut alle data fra bordet.For ( int x = 0 ; x < t.getRowCount (); x + + ) { for ( int y = 0; y < t.getColumnCount (); y + + ) { System.out.print ( t.getValueAt ( x , y ) + "") ;} System.out.println (); }
}