2012-06-09 12 views
6

मुझे इस पाठ फ़ाइल को मानचित्र पर विभिन्न बिंदुओं के अक्षांश और देशांतर मानों के साथ मिला है। मैं इन निर्देशांक को हाइबरनेट का उपयोग करके एक MySQL डेटाबेस में स्टोर करना चाहता हूं। मैं जानना चाहता हूं कि मैं अपनी स्ट्रिंग को अक्षांश और अक्षांश में कैसे विभाजित कर सकता हूं? अंतरिक्ष, टैब इत्यादि जैसे अन्य डिलीमीटरों के साथ इन प्रकार की चीजों को करने का सामान्य तरीका क्या है? फ़ाइल:जावा में टेक्स्ट फ़ाइल से अल्पविराम से अलग मूल्यों को कैसे पढ़ा जाए?

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 

कोड मैं फ़ाइल से पढ़ने का उपयोग कर रहा हूँ:,

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

उसके बाद स्ट्रिंग पार्स करने Double.parseDouble() विधि का उपयोग करें:

 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

मुझे विश्वास नहीं है कि पहली रीडलाइन की आवश्यकता है –

उत्तर

25

आप String.split() विधि का उपयोग कर सकते हैं डबल करने के लिए मूल्य।

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

बहुत बहुत धन्यवाद। एक जादू की तरह काम किया। – rishiag

+0

@Downvoter - टिप्पणी जोड़ने की देखभाल करें, कृपया! – adatapost

+5

@ user1425223 ध्यान दें कि 'String.split' एक रेगेक्स लेता है और यदि आप यह सुनिश्चित करना चाहते हैं कि कुछ भी मज़ेदार नहीं होता है (जैसे '.' या' | ') के साथ आप पहले विभाजक को' Pattern.quote()': 'str के माध्यम से पास कर सकते हैं .split (Pattern.quote ("।")) '(या इसे मैन्युअल रूप से बचें) –

2

ओपनसीएसवी एक लोकप्रिय लाइब्रेरी है यदि आप इसका उपयोग करना पसंद करेंगे।
यहाँ विवरण: http://opencsv.sourceforge.net/

वहाँ भी एक ऐसी ही विषय पर कुछ अन्य stackoverflow सवाल: विश्वसनीयता के लिए

4

उपयोग OpenCSV। इस तरह की चीजों के लिए विभाजन का कभी भी उपयोग नहीं किया जाना चाहिए। यहां मेरे एक कार्यक्रम से एक स्निपेट है, यह बहुत सरल है। मैं जांचता हूं कि क्या एक डिलीमीटर वर्ण निर्दिष्ट किया गया था और यदि यह है, तो इसका उपयोग करें, अगर मैं OpenCSV (एक अल्पविराम) में डिफ़ॉल्ट का उपयोग नहीं करता हूं। तो फिर मैं शीर्षक और क्षेत्रों

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

अल्पविराम से अपने स्ट्रिंग विभाजित करने के लिए पढ़ने के लिए (,) str.split(",") का उपयोग करें और टैब के लिए 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

// अक्षां = 3434 & देशांतर = yy38 & rd = 1.0 का उपयोग & | उस प्रारूप ओ में/p सार्वजनिक वर्ग 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

तुम भी java.util.Scanner वर्ग का उपयोग कर सकते 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(); 
    } 
} 
संबंधित मुद्दे