Writing data to text file in table format

Moko picture Moko · Oct 7, 2014 · Viewed 33.9k times · Source

So far I have this:

File dir = new File("C:\\Users\\User\\Desktop\\dir\\dir1\\dir2);
dir.mkdirs();
File file = new File(dir, "filename.txt");
FileWriter archivo = new FileWriter(file);
archivo.write(String.format("%20s %20s", "column 1", "column 2 \r\n"));
archivo.write(String.format("%20s %20s", "data 1", "data 2"));
archivo.flush();
archivo.close();

However. the file output looks like this:

http://i.imgur.com/4gulhvY.png

Which I do not like at all.

How can I make a better table format for the output of a text file?

Would appreciate any assistance.

Thanks in advance!

EDIT: Fixed!

Also, instead of looking like

    column 1             column 2
      data 1               data 2

How can I make it to look like this:

column 1             column 2
data 1               data 2

Would prefer it that way.

Answer

MadProgrammer picture MadProgrammer · Oct 7, 2014

The \r\n is been evaluated as part of the second parameter, so it basically calculating the required space as something like... 20 - "column 2".length() - " \r\n".length(), but since the second line doesn't have this, it takes less space and looks misaligned...

Try adding the \r\n as part of the base format instead, for example...

String.format("%20s %20s \r\n", "column 1", "column 2")

This generates something like...

        column 1             column 2
          data 1               data 2

In my tests...