Most probably a FileWriter
is not meant to write to a console, but it does.
So I use it for easy switching between the two destinations.
I only wonder what character conversion takes place when it comes to 8-bit
characters.
Run the following code without any parameter and you will see the difference
between System.out.println(...)
and the FileWriter
's output.
Run the code giving a file specification as parameter and you will see that the
FileWriter
works as expected.
I tried to:
- translate the test string to UTF-8
- passing a character set
(StandardCharsets.UTF_8, Charset.defaultCharset())
to theFileWriter
- specifying
FileDescriptor.out
for theFileWriter
but to no avail.
Other solutions are ready-at-hand, but still I would like to know whether using a FileWriter
is possible.
import java.io.*;
import java.nio.charset.*;
public class ConsoleOutput {
static public void main(String args[]) {
String s = "Hello äöüß áàâçéèê";
String filespc = args.length==0 ? "CON:" : args[0];
boolean console= filespc.equals("CON:"); // For both cmd.exe & PowerShell.
try (BufferedWriter outfile= new BufferedWriter(new FileWriter(filespc))) {
// if (console) s = new String(s.getBytes(StandardCharsets.UTF_8),
// StandardCharsets.UTF_8);
System.out.println(s);
outfile.write(s);
outfile.newLine();
}
catch (IOException e) {
System.out.println(e);
}
}
}