带有 FileWriter 的控制台输出

很可能 FileWriter 并不是要写入控制台,但它确实如此。 所以我用它来轻松地在两个目的地之间切换。 我只是想知道当涉及到 8 位时会发生什么字符转换 字符。

不带任何参数运行下面的代码,你会看到区别 System.out.println(...)FileWriter 的输出之间。 运行提供文件规范作为参数的代码,您将看到 FileWriter 按预期工作。

我试图:

  • 将测试字符串翻译成UTF-8
  • 将字符集 (StandardCharsets.UTF_8,Charset.defaultCharset()) 传递给 FileWriter
  • FileDescriptor.out 指定 FileWriter

但无济于事。

其他解决方案已准备就绪,但我仍然想知道是否可以使用 FileWriter

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);
    }

  }
}
wangliqingkong 回答:带有 FileWriter 的控制台输出

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/228783.html

大家都在问