Josh
Josh

Reputation: 11

Use csv data as string java

This maybe simple but java isn’t really my thing but I'm working with a java API.

I need to parse a csv file and use the values as strings.

CSV file:

 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

each row need to be read seprately so something like.

  1. Read first row of csv
  2. Assign values to strings (e.g. mac = 01:1A:E8:84:9D:27 device = 0 and so on)
  3. Run "code" using these strings
  4. Read second row of csv
  5. So on till end of csv.

Thanks

I have tried csvreader but I'm not able to use the strings outside of the while function and it does not read line by line.

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

Upvotes: 1

Views: 2411

Answers (3)

Josh
Josh

Reputation: 11

In the end I just called the funtion from the while loop.

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

Upvotes: 0

Chase
Chase

Reputation: 104

You have to declare the Strings outside of the loop. Otherwise the String variables would be loop scoped.

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

See:

Scopes tutorial

Javadoc: Variables

Upvotes: 0

OutOfMind
OutOfMind

Reputation: 924

As you are new to Java, whatever you are doing, looks like it reads the file line by line. But as you are defining the Strings in while loop, you won't be able to access it outside. If you want to read all lines and store in Strings, you should probably take array for all of them and define them outside the while loop, add values in the loop and then you'll be able to use it.

Or just create a Phone class:

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

And take an array of it outside while. Something like this:

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

Hope that helps!

Upvotes: 1

Related Questions