Search code examples
javafilewriterbufferedwriter

Storing String input in a file


Ok, before anyone starts flaming me for asking "dumb" questions, please note that I have pretty much exhausted every other option that I know of and come up empty handed. Still if you feel like it, please go ahead and downvote/report this question.

Now, for those that care

I am trying to take a String input from user and store it into a file Text.txt which will be created in the current working directory.

Following is the code

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Scanner;


public class Encryption {

    public static void main(String[] args) throws Exception {

        System.out.println("Enter a String you wish to encrypt : ");
        new BufferedWriter(new FileWriter(".\\Text.txt")).write(new Scanner(System.in).nextLine());
        System.out.println("Done");
    }
}

My problem is, the file is getting generated at the correct destination, but is always empty. I have tried it on multiple JDK versions and on different machines. Still getting the blank text file.

Please tell me, what is it that I am doing wrong.


Solution

  • You are not closing with .close() the BufferedWriter (which would then flush the last buffer and close the file).

    You can however do that task in new style:

        Files.write(Paths.get(".\\Text.txt"),
                    Arrays.asList(new Scanner(System.in).nextLine()),
                    Charset.defaultCharset());
    

    Otherwise you would need to introduce a variable, and gone is the one-liner.