zeus
zeus

Reputation: 99

Read file line by line and save in different strings

I need to read f_name,l_name, username, password from .txt file and save these information in different strings.

Here is code that i found for read line by line:

import java.io.*;

public class Users {

 public static void main(String[] args) {
  try {
   File file = new File("users.txt");
   FileReader fileReader = new FileReader(file);
   BufferedReader bufferedReader = new BufferedReader(fileReader);
   StringBuffer stringBuffer = new StringBuffer();
   String line;
   while ((line = bufferedReader.readLine()) != null) {
    stringBuffer.append(line);
    stringBuffer.append("\n");
   }
   fileReader.close();
   System.out.println("Contents of file:");
   System.out.println(stringBuffer.toString());
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

but I don't know how to every first name save in variable f_name, every last name in variable l_name,... Every of this f_name, l_name, username, password are in new line in file.

Example of file with datas:

John

Johnson

johny

1234

David

Davidson

davy

1234

...

Upvotes: 0

Views: 99

Answers (2)

Michele Lacorte
Michele Lacorte

Reputation: 5363

Try this:

Add this line:

private BufferedReader innerReader;

And use this method:

private List<String> loadFile(Reader reader)
        throws IllegalArgumentException, IOException{
    List<String> fileList = new ArrayList<String>();
    if(reader == null)
    {
        throw new IllegalArgumentException("Reader non valido");
    }
    String line;
    innerReader = new BufferedReader(reader);
    try
    {
    while((line = innerReader.readLine()) != null)
    {
        if (line == null || line.trim().isEmpty())
            throw new IllegalArgumentException(
                    "Line Empty");
        fileList.add(line);
    }
    } catch (IOException e) {
        throw new IOException(e);
    }
    return fileList;
}

Then in main:

MyClass myClass = new MyClass();
List<String> myList = new ArrayList<String>();
    try {
            myList = myClass.loadFile(new FileReader("YourFile.txt"));
    } catch (IllegalArgumentException | IOException e) {
        e.printStackTrace();
    }
    for(String s : myList)
    {
        System.out.println(s);
    }
    try {
        myClass.innerReader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

Output:

John

Johnson

johny

1234

David

Davidson

davy

1234

Upvotes: 0

Peter Lawrey
Peter Lawrey

Reputation: 533492

Every of this f_name, l_name, username, password are in new line in file.

You can read four lines at a time like this

String f_name = bufferedReader.readLine();
String l_name = bufferedReader.readLine();
String username = bufferedReader.readLine();
String password = bufferedReader.readLine();

Upvotes: 2

Related Questions