InputStream类下:FileInputStream ByteArrayInputStream StringBufferInputStreamFilterInputStream(BufferedInputStream DataInputStream)Reader类下:BufferedReader InputStreamRerader (FileReader)CharArrayReaderStringReader这么多类,我已经迷糊类的说明文档已看过,不过分不清。希望有高人来讲解一下。什么情况下用哪中类。
什么字节流 字符流的 感觉是一个东西啊 反正进到计算机里都是字节
什么字节流 字符流的 感觉是一个东西啊 反正进到计算机里都是字节
File 写文件的.
ByteArray 写字节的.
Buffered 一个带缓冲区的.
Object 写对象的..楼主自己选择吧.. 很好用的.
但我要输入个"abcdefg"的话 用哪个。。?
比如,文件中存的是字符,你在读取的时候,JVM会根据编码方式读取字符或字节,用inputstream就是读字节,比如一个“人”字,它根据编码方式,可以读成两个字节或三个字节,如果用reader来读,它会读成一个字符,因为它可以识别出‘虽然是几个字节,但它们是一起的,可以组成一个字符的’,所以就会有inputstream和reader了
常用的场景,我要读文本文件,里面都是一些大伙认识的字符,特别是包含汉字这样的,把字节分节是没意义的,所以会希望一个字符一个字符地读,但对二进制文件来说,你读的话,更希望用字节来读,而不是字符,因为字符是没有意义的,不过一般的认为是reader可以兼容stream,而且像网络传输这种,只会识别byte的,而不懂16位的字符的,所以stream还是很有用,但你可以根据需要把一个stream封装成reader,去更方便地进行读写操作。字符数组就是一个array,没啥特别,string是一个类呀,它们和c++不一样,是几乎没啥关系的两个东东,所以字符数组用的地方不是很多,byte数组倒是挺多,经常可以与string互相转换。比如:
String.getBytes();
new String(bytesArray);