2012-06-09 3 views
6

Ich habe diese Textdatei mit Breiten- und Längenwerten von verschiedenen Punkten auf einer Karte. Ich möchte diese Koordinaten in einer mySQL-Datenbank mit Hibernate speichern. Ich möchte wissen, wie ich meine Saite in Breiten- und Längengrade aufteilen kann. Was ist der allgemeine Weg, um diese Art von Dingen mit anderen Begrenzern wie Leerzeichen, Tab etc. zu tun? Datei:Wie man durch Komma getrennte Werte von der Textdatei in JAVA liest?

28.515046280572285,77.38258838653564 
28.51430151808072,77.38336086273193 
28.513566177802456,77.38413333892822 
28.512830832397192,77.38490581512451 
28.51208605426073,77.3856782913208 
28.511341270865113,77.38645076751709 
28.510530488025346,77.38720178604126 
28.509615992924807,77.38790988922119 
28.50875805732363,77.38862872123718 
28.507994394490268,77.38943338394165 
28.50728729434496,77.39038825035095 
28.506674470385246,77.39145040512085 
28.506174780521828,77.39260911941528 
28.505665660113582,77.39376783370972 
28.505156537248446,77.39492654800415 
28.50466626846366,77.39608526229858 
28.504175997400655,77.39724397659302 
28.503685724059455,77.39840269088745 
28.503195448440064,77.39956140518188 
28.50276174118543,77.4007523059845 
28.502309175192945,77.40194320678711 
28.50185660725938,77.40313410758972 
28.50140403738471,77.40432500839233 
28.500951465568985,77.40551590919495 
28.500498891812207,77.40670680999756 
28.5000463161144,77.40789771080017 
28.49959373847559,77.40908861160278 

Code I aus einer Datei zu lesen, bin mit:

 try { 
      BufferedReader in = new BufferedReader(new FileReader("G:\\RoutePPAdvant2.txt")); 
      String str; 
      str = in.readLine(); 
      while ((str = in.readLine()) != null) { 
       System.out.println(str); 
      } 
      in.close(); 
     } catch (IOException e) { 
      System.out.println("File Read Error"); 
     } 
+0

Ich glaube nicht, dass die erste readLine benötigt wird –

Antwort

25

Sie die String.split() Methode verwenden:

String[] ar=str.split(","); 

Danach verwenden Double.parseDouble() Methode, um die Zeichenfolge zu analysieren Wert zu verdoppeln.

double latitudes=Double.parseDouble(ar[0]); 
double longitudes=Double.parseDouble(ar[1]); 
+0

Vielen Dank. Lief wie am Schnürchen. – rishiag

+0

@Downvoter - Bitte Kommentar hinzufügen! – adatapost

+5

@ user1425223 Beachten Sie, dass 'String.split' eine Regex verwendet und wenn Sie sicherstellen wollen, dass nichts Lustiges passiert (wie mit' .' oder '|'), können Sie das Trennzeichen zuerst durch 'Pattern.quote()': 'str übergeben .split (Pattern.quote (".")) '(oder es manuell zu entkommen) –

4

Verwenden OpenCSV für Zuverlässigkeit. Split sollte niemals für diese Art von Dingen verwendet werden. Hier ist ein Ausschnitt aus einem eigenen Programm, es ist ziemlich einfach. Ich überprüfe, ob ein Trennzeichen angegeben wurde und verwende dieses, wenn es das ist, wenn nicht, verwende ich den Standard in OpenCSV (ein Komma). Dann las ich den Header und Felder

CSVReader reader = null; 
try { 
    if (delimiter > 0) { 
     reader = new CSVReader(new FileReader(this.csvFile), this.delimiter); 
    } 
    else { 
     reader = new CSVReader(new FileReader(this.csvFile)); 
    } 

    // these should be the header fields 
    header = reader.readNext(); 
    while ((fields = reader.readNext()) != null) { 
     // more code 
    } 
catch (IOException e) { 
    System.err.println(e.getMessage()); 
} 
1

Um Ihre String durch Komma geteilt (,) str.split(",") verwenden und für Registerkarte str.split("\\t")

try { 
     BufferedReader in = new BufferedReader(
           new FileReader("G:\\RoutePPAdvant2.txt")); 
     String str; 

     while ((str = in.readLine())!= null) { 
      String[] ar=str.split(","); 
      ... 
     } 
     in.close(); 
    } catch (IOException e) { 
     System.out.println("File Read Error"); 
    } 
1

// lat = 3434 & lon = YY38 & rd = 1,0 & | in diesem Format o/p public class Readtext {

public static void main(String[] args) throws Exception { 
    FileInputStream f= new FileInputStream("D:/workplace/sample/bookstore.txt"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(f)); 
    String strline; 
    StringBuffer sb = new StringBuffer(); 
    while ((strline = br.readLine()) != null) 
    { 
     String[] arraylist=StringUtils.split(strline, ","); 
     if(arraylist.length == 2){ 
      sb.append("lat=").append(StringUtils.trim(arraylist[0])).append("&lon=").append(StringUtils.trim(arraylist[1])).append("&rt=1.0&|"); 

     }else{ 
      System.out.println("Error: "+strline); 
     } 

    } 

    System.out.println("Data: "+sb.toString()); 
} 

}

0

Sie können auch die java.util.Scanner-Klasse verwenden, wird displying.

private static void readFileWithScanner() { 
    File file = new File("path/to/your/file/file.txt"); 

    Scanner scan = null; 

    try { 
     scan = new Scanner(file); 

     while (scan.hasNextLine()) { 
      String line = scan.nextLine(); 
      String[] lineArray = line.split(","); 
      // do something with lineArray, such as instantiate an object 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } finally { 
     scan.close(); 
    } 
} 
Verwandte Themen