2012-06-09 45 views
6

Tengo este archivo de texto con valores de latitud y longitud de diferentes puntos en un mapa. Quiero almacenar estas coordenadas en una base de datos mySQL usando hibernate. Quiero saber cómo puedo dividir mi cuerda en latitudes y longitudes? ¿Cuál es la manera general de hacer este tipo de cosas con otros delimitadores como espacio, pestaña, etc.? del archivo:¿Cómo se leen los valores separados por comas del archivo de texto en JAVA?

Código
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 

estoy usando para leer un archivo:

 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

No creo que se necesite la primera readLine –

Respuesta

25

Usted puede utilizar el String.split() método:

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

Después de eso, utilice Double.parseDouble() método para analizar la cadena valor para duplicar

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

Muchas gracias. Trabajado como un encanto. – rishiag

+0

@Downvoter - ¡Cuidado para agregar un comentario, por favor! – adatapost

+5

@ user1425223 tenga en cuenta que 'String.split' toma una expresión regular y si desea asegurarse de que no ocurra nada gracioso (como con' .' o '|') primero puede pasar el separador a través de 'Pattern.quote()': 'str .split (Pattern.quote (".")) '(o escape de forma manual) –

4

Uso OpenCSV de fiabilidad. Split nunca debe usarse para este tipo de cosas. Aquí hay un fragmento de un programa mío, es bastante sencillo. Compruebo si se especificó un carácter delimitador y uso este si es así, si no, uso el predeterminado en OpenCSV (una coma). Luego leí el encabezado y campos

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

Para dividir la cadena por una coma (,) utiliza str.split(",") y para la lengüeta utilizar 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 & | en ese formato o/p se displying 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

También puede utilizar la clase java.util.Scanner.

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(); 
    } 
} 
Cuestiones relacionadas