Q:

readFile method does not show results at console

This is my question :
     a method readLine that reads a line from the file specified in fileName and returns the line a String.

What I am trying to do is I read and write some info into text file using eclipse. And here are my codes :
    public class FileController {
private String fileName;

public FileController(){
    String fileName = "student.txt";
}

public FileController(String fileName){
    this.fileName = fileName;
}

public String readLine(){
    String line ="";
    try{
        FileReader fr = new FileReader(fileName);
        Scanner sc = new Scanner(fr);
        while(sc.hasNextLine()){
            Student stud = new Student(sc.nextLine());
            line = stud.toString();
        }
        fr.close();
    }catch(FileNotFoundException exception){
        System.out.println("File " + fileName + " was not found");
    }catch(IOException exception){
        System.out.println(exception);
    }
    return line;
}

public void writeLine(String input){
    try{
        FileWriter fw = new FileWriter(fileName,true);
        BufferedWriter bw = new BufferedWriter(fw);
        PrintWriter outFile = new PrintWriter(bw);

        outFile.println(input);
        outFile.close();
    }catch(IOException exception){
        System.out.println(exception);
    }
}

public static void main (String [] args){
    FileController fc = new FileController("student.txt");
    String input = "1234567H;Gabriel;23/12/1994;56;67;87";
    fc.readLine();
    fc.writeLine(input);
}

This works perfectly by adding the record into the text file. However, the console there doesn't shows the result. So from what I know it's the mistake was at readLine(). When I used void it works perfectly. But the question requests me to return a String. Anybody know how to solve this?

when I do println within the while loop there's record stored in there. I guess the programme took the String file= ""; this line and return the result. So how can I take the result of line in while loop and replace with the initialization?

A:

You are overwriting the line in while loop:
try{
        FileReader fr = new FileReader(fileName);
        Scanner sc = new Scanner(fr);
        while(sc.hasNextLine()){
            Student stud = new Student(sc.nextLine());
            line = stud.toString();
        }

So this means that only last line will get passed to student [most likely blank line] and it might not print anything or even an exception might come. Use StringBuffer and append the string and then return that.
EDIT:
Try this.
public String readLine(){
    StringBuffer line =new StringBuffer();
    try{
        FileReader fr = new FileReader(fileName);
        Scanner sc = new Scanner(fr);
        while(sc.hasNextLine()){
            Student stud = new Student(sc.nextLine());
            line.append(stud.toString());
        }
        fr.close();
    }catch(FileNotFoundException exception){
        System.out.println("File " + fileName + " was not found");
    }catch(IOException exception){
        System.out.println(exception);
    }
    return line.toString();
}

EDIT:
 If above code also returns blank then most likely issue is Strudent "toString()" method. It might be returning blank.
EDIT:
public String readLine(){
        StringBuffer line =new StringBuffer();
        try{
            FileReader fr = new FileReader(fileName);
            Scanner sc = new Scanner(fr);
            while(sc.hasNextLine()){
                Student stud = new Student(sc.nextLine());
                line.append(stud.toString());
                line.append("\n");
            }
            fr.close();
        }catch(FileNotFoundException exception){
            System.out.println("File " + fileName + " was not found");
        }catch(IOException exception){
            System.out.println(exception);
        }
        return line.toString();
    }

