这是我从 CSV 文件中读取行的代码:
private void input()throws IOException
{
//FILE READER FIELDS
StringTokenizer st=null;
BufferedReader b=new BufferedReader(new FileReader(csvfile));
String line=null;
int count=0;
while((line=b.readLine())!=null)
{
count+=1;
if(count==1)
{
continue;
}
else
{
String[] arr=new String[19];
st=new StringTokenizer(line,",");
int i=0;
while(st.hasMoreTokens())
{
arr[i]=st.nextToken();
i++;
}
for(int j=2;j<arr.length;j++)
{
if(j==11)
{
calib_g=Double.parseDouble(arr[j]);
}
if(j==12)
{
coolant_temp=Double.parseDouble(arr[j]);
}
if(j==13)
{
engineRPM=Double.parseDouble(arr[j]);
}
}
}
}
}
从代码中可以推断,上述input
方法的目的是从第二行开始读取文件,将读取的行中获得的令牌存储在一个预定长度的数组中。然后,从数组中选择元素用于更新静态变量calib_g
和。engineRPM
coolant_temp
这些变量然后由以下方法使用,该方法使用这些值更新 COSM(以前是 pachube 现在 xively):
private void update(int feedid) throws PachubeException, IOException
{
Feed f = this.pachube.getFeed(feedid);
System.out.println("XML is :" + f.toXML());
input();
flag=false;
System.out.println("updating ...");
f.updateDatastream(8345, calib_g);
f.updateDatastream(6274, coolant_temp);
f.updateDatastream(1044, engineRPM);
System.out.println("updated");
}
问题:
从input
方法中调用update
方法时,while((line=b.readLine())!=null)
会遍历整个循环并仅返回最后一行的值。
目的:upload
我想在方法调用方法
时从单行上传数据input
。因此程序的流程应该是这样的
update
Timer
使用main 方法中的a 每 5 秒调用一次方法。update
方法调用input
方法。- 编译器执行循环。
while
而循环从 csv 文件中读取一行。该行被标记并存储在数组中。数组的选定元素用于更新static
变量。 - 该
update
方法使用上述static
变量更新 XIVELY。 - 转到步骤 1。
update
再次调用该方法。 - 随后再次调用该
input
方法。这次使用 csv 文件的下一行来更新static
变量