使用csv数据作为字符串java

时间:2017-08-09 12:49:35

标签: java csv

这可能很简单,但java不是我的事,但我正在使用java API。

我需要解析一个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

每行需要分别读取,例如。

  1. 阅读第一行csv
  2. 为字符串分配值(例如mac = 01:1A:E8:84:9D:27 device = 0等等)
  3. 使用这些字符串运行“代码”
  4. 阅读第二行csv
  5. 所以直到csv结束。
  6. 谢谢

    我已经尝试过csvreader但是我无法使用while函数之外的字符串而且它不能逐行读取。

    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");
    }
    

3 个答案:

答案 0 :(得分: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

希望有所帮助!

答案 1 :(得分:0)

你必须在循环之外声明字符串。否则,String变量将是循环范围的。

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

答案 2 :(得分:0)

最后我刚从while循环调用了函数。

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();