0

这是我从 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和。engineRPMcoolant_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。因此程序的流程应该是这样的

  • updateTimer使用main 方法中的a 每 5 秒调用一次方法。
  • update方法调用input方法。
  • 编译器执行循环。while而循环从 csv 文件中读取一行。该行被标记并存储在数组中。数组的选定元素用于更新static变量。
  • update方法使用上述static 变量更新 XIVELY。
  • 转到步骤 1。update再次调用该方法。
  • 随后再次调用该input方法。这次使用 csv 文件的下一行来更新static变量
4

0 回答 0