1

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");
}
3
  • 1
    You are declaring the strings inside the while loop, so why would you expect to be able to use them outside of it? Commented Aug 9, 2017 at 12:51
  • Just call an outside function with them... Commented Aug 9, 2017 at 12:59
  • Why dont you use a BufferedReader and make use of the readLine() method in it ? Commented Aug 9, 2017 at 12:59

3 Answers 3

1

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!

Sign up to request clarification or add additional context in comments.

Comments

0

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

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.