读取一个文件并在两个数字之间读取数字是某件事
Read a file and have numbers in between two numbers read be a certain thing
说我有这个数据文件。我正在尝试绘制一张地图,其中节点作为连接两条道路的交叉点,并在它们之间绘制一条道路。 coords 中的前两个数字是 nodeID1 的 lat/lon,最后两个(右下)是 nodeID2 的。中间的两个坐标是道路改变方向的地方,就像道路弯曲的点一样。有时,如您所知,道路有不止一条曲线或类似的方向(多风的道路),因此我会为两个节点之间的路段提供更多坐标。我想知道如何读取节点之间的坐标并将它们存储在集合中,如 "road segments"/"curving points" 等?我将如何使用缓冲读取来解决这个问题?
BufferedReader 数据 = new BufferedReader(new FileReader(roadFile));
roadID length nodeID1 nodeID2 coords
17134 0.22322055914578026 12420 12556 -36.88853 174.72218 -36.88954
174.72361 -36.88992 174.72398
使用 BufferedReader
打开 roadFile
后,您可以使用 BufferedReader
的 readLine()
方法逐行解析输入。每行返回为 String
。然后,您可以使用 StringTokenizer
根据分隔符(例如制表符 \t
或空白字符)将 String
分成多个部分。下面是一些示例代码:
try(BufferedReader data = new BufferedReader(new FileReader(roadFile));) {
String line = null;
String delim = "\t";
while((line = br.readLine()) != null){
StringTokenizer tok = new StringTokenizer(line, delim);
while(tok.hasMoreTokens()){
String nextToken = tok.nextToken();
//do stuff with the nextToken String
}
}
} catch (IOException e) {
e.printStackTrace();
}
说我有这个数据文件。我正在尝试绘制一张地图,其中节点作为连接两条道路的交叉点,并在它们之间绘制一条道路。 coords 中的前两个数字是 nodeID1 的 lat/lon,最后两个(右下)是 nodeID2 的。中间的两个坐标是道路改变方向的地方,就像道路弯曲的点一样。有时,如您所知,道路有不止一条曲线或类似的方向(多风的道路),因此我会为两个节点之间的路段提供更多坐标。我想知道如何读取节点之间的坐标并将它们存储在集合中,如 "road segments"/"curving points" 等?我将如何使用缓冲读取来解决这个问题?
BufferedReader 数据 = new BufferedReader(new FileReader(roadFile));
roadID length nodeID1 nodeID2 coords
17134 0.22322055914578026 12420 12556 -36.88853 174.72218 -36.88954
174.72361 -36.88992 174.72398
使用 BufferedReader
打开 roadFile
后,您可以使用 BufferedReader
的 readLine()
方法逐行解析输入。每行返回为 String
。然后,您可以使用 StringTokenizer
根据分隔符(例如制表符 \t
或空白字符)将 String
分成多个部分。下面是一些示例代码:
try(BufferedReader data = new BufferedReader(new FileReader(roadFile));) {
String line = null;
String delim = "\t";
while((line = br.readLine()) != null){
StringTokenizer tok = new StringTokenizer(line, delim);
while(tok.hasMoreTokens()){
String nextToken = tok.nextToken();
//do stuff with the nextToken String
}
}
} catch (IOException e) {
e.printStackTrace();
}