Java中的PrintStream write()方法

时间:2013-09-05 15:04:37

标签: java printstream

直接来自此Java API

  

     

public void write(int b)

     

将指定的字节写入此流。如果该字节是换行符和   启用自动刷新,然后将调用flush方法。

     

请注意,该字节写为给定;写一个将要的角色   根据平台的默认字符编码进行翻译,   使用print(char)或println(char)方法。

我看到它被指定为the byte is written as given; 但是,如果我尝试write(65),我会得到{预期的A

我应该在write()写一下,以便与print()的内容不一致? 你能举个例子吗?

3 个答案:

答案 0 :(得分:0)

二进制01000001byte)是ASCII字符A,因此当您阅读为String时就可以得到它。

您需要使用FilterOutputStream.html#write(byte[])

write("65".getBytes());

获得相同的输出。

或者您需要的任何类型

write(new Integer(65).toString().getBytes());

我应该在write()中写什么,以便与print()不匹配?你能做任何一个例子吗?

System.out.println(65); // writes 65 as a String, String.valueOf(65).getBytes()
System.out.write(65); // writes 65 as a byte
System.out.flush();

打印

65 // the String value '65'
A // the character value of binary 65

阅读print方法的javadoc。上面的一个接受int

  

打印整数。 String.valueOf(int)生成的字符串是   根据平台的默认字符转换为字节   编码,这些字节以完全按照的方式写入   write(int)方法。

在任何一种情况下,都会将字节写入流中,但它们的显示方式取决于您对它们的读取方式。 String具有接受charsetNameCharset对象的构造函数。 <{3}}(作为一个概念和一个类)是

  

16位Unicode代码单元序列之间的命名映射   和字节序列。

答案 1 :(得分:0)

给定的

String s = "some string";
byte[] sData = s.getBytes();

write(sData, 0, sData.length);print(s);

应该是等效的。

答案 2 :(得分:0)

如果您尝试

writer.print('Ä');

根据您的平台,您可能会得到不同的结果。对于具有Latin-1作为默认编码的平台,它可能是单个字节,对于具有UTF-8的平台,可能是2个字节。