以下是我从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
方法的目的是从第二行存储开始读取文件,该数据是从长度是预定的数组中的perused行获得的。然后,使用数组中的select元素更新静态变量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
每5秒调用一次。update
方法调用input
方法。while
循环。循环读取一行
csv文件。该行被标记化并存储在array.Selected中
数组的元素用于更新static
变量。update
方法使用前面提到的static
进行XIVELY更新
变量update
方法。input
方法。这次是下一次
csv文件的行用于更新static
变量