直接来自此Java API:
写
public void write(int b)
将指定的字节写入此流。如果该字节是换行符和 启用自动刷新,然后将调用flush方法。
请注意,该字节写为给定;写一个将要的角色 根据平台的默认字符编码进行翻译, 使用print(char)或println(char)方法。
我看到它被指定为the byte is written as given;
但是,如果我尝试write(65)
,我会得到{预期的A
。
我应该在write()
写一下,以便与print()
的内容不一致?
你能举个例子吗?
答案 0 :(得分:0)
二进制01000001
(byte
)是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
具有接受charsetName
或Charset
对象的构造函数。 <{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个字节。