Java 中的 PrintStream write() 方法



直接来自这个Java API:

公共无效写入(int b)

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

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

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

我应该在write()写什么才能与print()不匹配?你能举个例子吗?

给定

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

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

应该是等效的。

二进制

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

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

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

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

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

如果你尝试

writer.print('Ä');

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

相关内容

  • 没有找到相关文章

最新更新