JAVAIO

    xiaoxiao2021-03-25  80

    1.输入和输出:

      输入:inputStream,从多种起源地读取数据输入到内存中;这些起源地包括如下:

    1)字节数组

    2)String对象

    3)文件

    4)管道

    5)socket

    衍生类:

    ByteArrayInputStream字节缓冲区读取;

    DataInputStream基本类型读取;

    StringBufferInputStream字符串缓冲流读取;

    FileInputStream文件缓冲流;

    PipedInputStream管道缓冲流;

    缓冲流对于inputStream来说,读取效率要高,但是,要注意在使用完毕之后,关闭缓冲流,释放掉相应的缓冲内存。

    输出:outputStream,将内存数据写入到指定的目的地;

    ByteArrayOutputStream    字节缓冲区写入;

    DataOutputStream基本类型数据写入;支持多种基本类型的write

    FileOutputStream文件缓冲写入;

    PipedOutputStream管道缓冲写入;

    RandomAccessFile:

    用来访问那些保存数据记录的文件的,可以用seek()进行访问,且进行读写;还可以实现文件的大小,跳过指定长度等;

    不是inputStream和outputStream的衍生类;

    File类:既代表一个特定文件名字,又代表目录内一系列文件的名字;

    Reader/Writer与InputStream/OutputStream的关系:

    1)并不是Reader/Writer替换了InputStream/OutputStream,而是保持向后兼容;

    2)InputStream/OutputStream是java1.0提供的;Reader/Writer是java1.1提供的;

    3)InputStream只支持8位字节流,Reader/Writer支持16位字节流,(java内含的char是16位的Unicode);

    4)未做改动的几个stream:

    DataOutputStream 作为一种按数据格式保存和获取数据的流

    File

    RandomAccessFile

    SequenceInputStream

    5)流转换示例:

    DataInputStream  in=new DataInputStream( new BufferedInputStream( new  FileInputStream("data.txt")));

    BufferedReader inbr=new BufferedReader( new InputStreamReader(in));

    in.readDouble();

    inbr.readLine();

    String s2=new String("sssss");

    StringReader  s2sr=new StringReader(s2);

    文件解压缩:

    java1.1提供的压缩类功能是从InputStream/OutputStream拓展出来的;

    CheckedInputStream   GetCheckSum()   附加验证码的解压操作

    CheckedOutputStream GetCheckSum() 附加验证码的压缩操作

    DeflaterOutputStream 用于压缩类的基础类:

    ZipOutputStream DeflaterOutputStream 的拓展类,将数据压缩成Zip文件格式;

    GZIPOutputStream DeflaterOutputStream 的拓展类,将数据压缩成GZIP文件格式;

    DeflaterInputStream用于解压类的基础类:

    ZipInputStream DeflaterInputStream的拓展类,解压用Zip文件格式保存的数据;

    GZIPInputStream DeflaterInputStream的拓展类,解压用GZIP文件格式保存的数据;

    注意:在使用GZIP进行解压缩时,如果要支持中文,则将编码方式设置为GBK;

    ASCII  GBK  uncode  utf-8(utf-16)的关系:

    都是字符编码,字符只有被编码后才可以被计算机识别,而转换后的就称之为计算机的内码,早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

    GBK编码长度是两个字节,包含全部中文,utf-8是因为一个字节,汉字三个字节,它是由uncode发展而来的,uncode支持全世界的文字编码;utf-8针对英文编码效率更高;

         UTF-8就是以8位为单元对UCS进行编码;UTF-16以16位为单元对UCS进行编码;uncode只是一个编码方案,而utf编码则要用于实际传输;GBK也要用于实际传输;

        ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。而Unicode只与ASCII兼容(更准确地说,是与ISO-8859-1兼容),与GB码不兼容 如果GBK要转UTF-8必须先转uncode码,再转utf-8就OK了.

    转载请注明原文地址: https://ju.6miu.com/read-38992.html

    最新回复(0)