How to make Scanner Properly Read Escape Characters?

java, java.util.scanner

Solution

If `\n` is written is the file you can't use `nextLine()` because there is not `\n` (end of line) but instead there is `\\n` (two characters).

Instead try with a delimiter :

    Scanner sc = new Scanner(new File("/home/alain/Bureau/ttt.txt"));
    sc.useDelimiter("\\\\n");
    while(sc.hasNext()){
        System.out.println(sc.next());
    }

Output :

Hello World!

I've been trying to get this to work for a while now.

Frustrating.

EDIT:

If you want to read the file and replace the `\n` in the text with actual EOL. You can simply use :

Scanner sc = new Scanner(new File("/home/alain/Bureau/ttt.txt"));

//loop over real EOL
while(sc.hasNextLine()){

     //Replace the `\n` in the line with real EOL.
     System.out.println(sc.nextLine().replace("\\n", System.getProperty("line.separator")));
}

Problem

I'm reading from a file that reads something like all on one line: ``` Hello World!\nI've been trying to get this to work for a while now.\nFrustrating.\n ``` And my Scanner reads that from the file and puts it in a String: ``` Scanner input = new Scanner(new File(fileName)); String str = input.nextLine(); System.out.print(str); ``` Now, I want the output then to be: ``` Hello World! I've been trying to get this work for a while now. Frustrating. ``` But instead I'm getting the exact same thing as the input. That is, each \n is included in the output and everything is on one line instead of separate lines. I thought that Scanner would be able to read the escape character properly but it's instead copying it onto the String like it's \\n.

Original source