JAVA语言中输入输出流问题

“在JAVA中的字符是Unicode编码,是双字节的。InputStream类,是用来处理字节的,并不适合处理字符文本”这句话该怎么理解?这双字节编码、字节处理、字符文本又该怎么理解?我是新手求调教下。

你的一个字符串就是一个String,每个String里的每个字都是一个char(字符),你可以通过String.charAt()函数获取字符串中的char。这个char包含了所有的英文,中文,符号和其他各国语言。所以它的内部是用一个16位的整数来保存的,这就是文档上说的UNICODE编码。
我们如果只在程序内部操作字符串,那最多只要关心到char就足够了。但是如果保存到文件中,就要把char转换成byte(字节)。因为在文件中是以字节为单位存储的。
而且由于现在char转byte的转换方式已经成型了很多编码规范,比如GB-2312, UTF-8, UNICODE等等,因此要在char和byte之间做转换的话,必须要指定转换所使用的编码规范,
一旦规范写错,转换成的字符串就不是你想要的了。而且几乎无法查错。所以才有这么一句话。
一般在java里都会在InputStream类外面包一层文本格式转换的流类,然后通过外边那层类来操作流

常用的输入输出为:InputStream,OutputStream,Reader,Writer
InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象,
Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串.

双字节编码、字节处理、字符文本
一个个来解释吧。
双字节编码:就是资格字符的组成字节数。1字节就是1byte也就是8位(01010101),这表示的是一个字符由两个字节来组成。
字节处理:就是1byte(字节)1字节的来处理,图片,电影什么都是由字节构成的,当然字符(2个字节,由编码决定)也是字节构成的。
字符文本:文本文件都是字符(毕竟内面装的都是字符)。

InputStream类,是用来处理字节的,并不适合处理字符文本。

这句好的意思是:用字节流可能会把某些字符拆开。