Как читать значения, разделенные запятыми, из текстового файла в JAVA?
у меня есть этот текстовый файл со значениями широты и долготы разных точек на карте. Я хочу сохранить эти координаты в базе данных mySQL, используя hibernate. Я хочу знать, как я могу разделить свою строку на широты и долготы? Каков общий способ сделать эти типы вещей, которые с другими разделителями, такими как пространство, вкладка и т. д.? Файл:
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
код, который я использую для чтения из файла:
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");
}
6 ответов
можно использовать String.split()
способ:
String[] ar=str.split(",");
после этого, используйте Double.parseDouble ()
метод для анализа строкового значения в double.
double latitudes=Double.parseDouble(ar[0]);
double longitudes=Double.parseDouble(ar[1]);
используйте 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());
}
OpenCSV-популярная библиотека Если вы предпочитаете использовать.
Подробности здесь: http://opencsv.sourceforge.net/
есть также несколько других вопросов stackoverflow по аналогичной теме:
//широта=3434&долгота=yy38&РД=1.0&| в том формате, О/Р displying открытый класс 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());
}
}
чтобы разделить строку на запятую (,), используйте 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");
}
вы также можете использовать Java.утиль.Класс сканеров.
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();
}
}