2017-08-09 62 views
1

這可能很簡單,但是java並不是我的東西,但我正在使用java API。使用csv數據作爲字符串java

我需要解析一個csv文件並將這些值用作字符串。

CSV文件:

Mac,device,level ,key number,key function ,name,number,prim 
01:1A:E8:84:9D:27,0,0,1,31,line,441865945218,TRUE 
01:1A:E8:84:9D:27,0,0,2,51,dss,441865985452,FALSE 

每一行需要被seprately看了這麼像。

  1. 閱讀CSV的第一行
  2. 分配值字符串(例如,MAC = 01:1A:E8:84:9D:27設備= 0等)
  3. 運行 「代碼」 使用這些字符串
  4. 閱讀csv的第二行
  5. 因此直到csv結束。

感謝

我已經試過csvreader但我不能夠使用,而多功能外的字符串,它不逐行讀取。

CsvReader phones = new CsvReader("dls.csv"); 

phones.readHeaders(); 

while (phones.readRecord()){ 

    String deviceID = phones.get("Mac"); 
    String device = phones.get("device"); 
    String level = phones.get("level"); 
    String keynumber = phones.get("key number"); 
    String keyfunction = phones.get("key Function"); 
    String label = phones.get("name"); 
    String e164 = phones.get("number"); 
    String prim = phones.get("prim"); 
} 
+1

你正在''while'循環中聲明字符串,所以你爲什麼期望能夠在它之外使用它們? – UnholySheep

+0

只需調用外部函數... –

+0

爲什麼不使用BufferedReader並使用它的readLine()方法? – ramasCoder

回答

1

如你是新來的Java,你所做的一切,看起來像逐行讀取文件中的行。但是,當您在while循環中定義字符串時,您將無法在外部訪問它。 如果你想讀取所有的行並存儲在字符串中,你應該爲它們全部使用數組,並在while循環之外定義它們,在循環中添加值,然後你就可以使用它。

或者只是創建一個Phone類:

public class Phone{ 
String deviceId; 
String device; 
......etc... 
//setters and getters 
} 

,並利用它外面while數組。類似這樣的:

CsvReader phones = new CsvReader("dls.csv"); 

     phones.readHeaders(); 
     List<Phone> phonesArr=new ArrayList<Phone>(); 
     while (phones.readRecord()) 
     { 
      Phone phone=new Phone(); 
      phone.setDeviceId(phones.get("Mac")); 
      phone.setDevice(phones.get("device")); 
      ..... 
      phones.add(phone); 
     } 
// array phones will be accessible here 

希望有所幫助!

0

您必須在循環之外聲明字符串。否則,字符串變量將是循環範圍。

CsvReader phones = new CsvReader("dls.csv"); 

phones.readHeaders(); 

String deviceID; 
String device; 
String level; 
String keynumber; 
String keyfunction; 
String label; 
String e164; 
String prim; 

while (phones.readRecord()){ 

    deviceID = phones.get("Mac"); 
    device = phones.get("device"); 
    level = phones.get("level"); 
    keynumber = phones.get("key number"); 
    keyfunction = phones.get("key Function"); 
    label = phones.get("name"); 
    e164 = phones.get("number"); 
    prim = phones.get("prim"); 
} 

參見:

Scopes tutorial

Javadoc: Variables

0

最後我只是叫從while循環funtion。

while (phones.readRecord()) { 
       deviceID = phones.get("Mac"); 
       Device = phones.get("device"); 
       Level = phones.get("level"); 
       Keynumber = phones.get("key number"); 
       Keyfunction = phones.get("key function"); 
       Label = phones.get("name"); 
       E164 = phones.get("number"); 
       Prim = phones.get("prim"); 

       tools connect = new tools(); 
       connect.connect(); 
       connect.setkeys(deviceID,Device,Level,Label,Keynumber,Keyfunction,E164,Prim); 
       //System.out.println(Prim); 

      } 
      phones.close();