Java 字节流和相关的东西
我有几个关于字节流是什么,它们是如何运作的问题。如果你有一些新手友好的链接,它将适合最好的 1) 当我将字节流保存到某个txt(例如writeInt方法)中时,会得到乱码字符。他们来自哪里?文本编辑器试图解码字节,但为什么没有成功?同时,Java 字节流和相关的东西,java,Java,我有几个关于字节流是什么,它们是如何运作的问题。如果你有一些新手友好的链接,它将适合最好的 1) 当我将字节流保存到某个txt(例如writeInt方法)中时,会得到乱码字符。他们来自哪里?文本编辑器试图解码字节,但为什么没有成功?同时,DataOutputStream类中的writeBytes()也将字符串作为字节序列写入,但这次它在文本编辑器中显示为字符。为什么? 2) DataOutputStream过滤器用于什么,它添加了什么?据说,DataOutputStream允许直接从流中写入各种
DataOutputStream
类中的writeBytes()
也将字符串作为字节序列写入,但这次它在文本编辑器中显示为字符。为什么?
2) DataOutputStream
过滤器用于什么,它添加了什么?据说,DataOutputStream
允许直接从流中写入各种类型(int
,double
…)。这是什么意思
4) 如果我有2个docx 1000字符,第一个使用英语字符,第二个使用俄语字符。俄语文档不应该更大吗(因为据我所知,所有这些奇怪的字母可能需要超过1个字节)。但事情似乎不是这样的
5) 字节流和字符流在实现方面有什么区别?它们都保存字节序列,但字符流将其分割成若干段?这是如何实现的
谢谢大家! Java在概念上区分了:
- 二进制数据:
byte[],InputStream,OutputStream
- 文本(Unicode):
String、char、Reader、Writer
- 它们之间的桥接:
InputStreamReader、OutputStreamWriter、String.getBytes(字符集)、new String(字节,字符集)
Integer.toString(524)
=“524”在ASCII或几乎任何字符集中的文本表示形式如下:
byte[] bytes = "542".getBytes("UTF-8"); // Three bytes: 53, 50, 52
DataOutputStream是Java对象的特殊(二进制数据)输出流。它还可以输出一个字符串,如UTF-8字节,这是人类可以识别的,在一堆二进制值中
docx格式(与odt格式一样)是一个压缩目录,内容为XML文件。XML通常是UTF-8格式的,对于西里尔文来说,这种格式会稍微多一些。然而,压缩使问题变得更为复杂
Unicode是适合[0224]的所有字符的编号。Unicode有多字节编码UTF-8,前128个ASCII字符使用一个字节,其余多个字节。在这些多字节序列中找不到\
左右的字符(高位设置)字节0也可以被冗余地写入多字节序列,这对于基于C的软件(如操作系统)来说很好,它将0字节解释为字符串终止符(而不是Java).UTF-16使用两个字节,可以处理几乎所有的非亚洲脚本。如果Unicode数大于216,则使用类似的机制,一个Unicode字符的字符序列数。有UTF-16LE(小端)和UTF-16BE(大端)对于两个字节的顺序。上面的int示例中使用了big-endian。英特尔处理器/Windows使用little-endian
评论后: 字节是8位(0或1)的单位,其值为00000000(=0),…,11111111(=255)。ASCII字符将某些字符分配给介于0和127之间的数字,如:
32 = ' ' 64 = '@'
48 = '0' 65 = 'A'
49 = '1' 66 = 'B'
关于二进制数,请参见。Java在概念上区分了:
- 二进制数据:
byte[],InputStream,OutputStream
- 文本(Unicode):
String、char、Reader、Writer
- 它们之间的桥接:
InputStreamReader、OutputStreamWriter、String.getBytes(字符集)、new String(字节,字符集)
Integer.toString(524)
=“524”在ASCII或几乎任何字符集中的文本表示形式如下:
byte[] bytes = "542".getBytes("UTF-8"); // Three bytes: 53, 50, 52
DataOutputStream是Java对象的一种特殊(二进制数据)输出流。它还可以输出一个字符串,如UTF-8字节,这是人类可以识别的,以二进制值的混乱形式输出
docx格式(与odt格式一样)是一个压缩目录,其内容为XML文件。XML通常采用UTF-8格式,对于西里尔文则更为复杂。不过,压缩会混淆问题
Unicode是适合[0224]的所有字符的编号。Unicode有多字节编码UTF-8,前128个ASCII字符使用一个字节,其余多个字节。在这些多字节序列中找不到\
左右的字符(高位设置)字节0也可以被冗余地写入多字节序列,这对于基于C的软件(如操作系统)来说很好,它将0字节解释为字符串终止符(而不是Java).UTF-16使用两个字节,可以处理几乎所有的非亚洲脚本。如果Unicode数大于216,则使用类似的机制,一个Unicode字符的字符序列数。有UTF-16LE(小端)和UTF-16BE(大端)对于两个字节的顺序。上面的int示例中使用了big-endian。英特尔处理器/Windows使用little-endian
评论后: 字节是8位(0或1)的单位,其值为00000000(=0),…,11111111(=255)。ASCII字符将某些字符分配给介于0和127之间的数字,如:
32 = ' ' 64 = '@'
48 = '0' 65 = 'A'
49 = '1' 66 = 'B'
关于二进制数,请参见。1。)举一个例子2。)阅读文档3。)你期望得到什么4。)阅读关于字符编码的内容5。)再次阅读关于编码的内容。4)Java中的所有字符都表示为16位或2字节。从何处获取字节流?从网络获取?如果从源读取流,则每个tim获取2字节转换