协调文件中的读取线并使用获得的数据

时间:2013-09-11 05:49:11

标签: java file-io

以下是我从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_gengineRPMcoolant_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更新 变量
  • 转到第1步。再次调用update方法。
  • 随后再次调用input方法。这次是下一次 csv文件的行用于更新static变量

0 个答案:

没有答案