李成笔记网

专注域名、站长SEO知识分享与实战技巧

Java基础篇之三连005 java基础篇之三连005最新版本

1、Java中有几种类型的流?

A: Java中按流的类型划分为:输入流(InputStream)输出流(OutpuStream)、按实现功能划分为:节点流(可以从或向一个地方读取数据。eg :FileReader)和处理流(对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据的读取。eg:BufferReader),一般处理流的构造方法总是要带上一个其他流对象作为参数,一个流对象经过其他流的多次封装,则称为流的链接。按处理流的单位划分为:字节流字符流,字节流继承于InputStreamOutputStream,字符流继承于InputStreamReaderOutputStreamWriter


2、字节流如何转化为字符流,以及字节流和字符流的区别?

A: 字节输入流转字符输入流通过InputStreamReader实现,构造参数传入InputStream对象,字节输出流转字符输出流通过OutputStreamWriter,构造参数传入OutputStream对象。a:字节流在读取时是读取到一个字节就返回一个字节,而字节流则是读取到一个或多个字节时,会先查指定的编码表(中文对应的字节时2个,在UTF-8码表中时3个字节),将查到的字符返回。字节流可以处理所有类型的数据,而字符流只能处理字符数据。只要处理数据时纯文本数据,就要优先考虑使用字符流,除此都用字节流。字节流主要操作byte类型的数据,以byte数组为准,主要操作OutputStreamInputStream。字符处理的单位为2个字节的Unicode字符,分别操作字符、字符数组和字符串,而字节流处理的单位为1个字节,所以处理国际化多语言支持,读取音频文件、图片、视频文件等用字节流读取,读取文本类的数据,可使用字符流,比如使用ReaderWriter专门操作字符流的类。

3、如何将一个Java对象序列化到文件中或者将序列化的对象存储的文件读取出来?

A: 主要使用到两个类ObjectOutputStreamObjectInputStream,在序列化对象的时候,对象的类必须实现Serializable接口,作为可序列化的标示。读取代码如下:

// 写入序列化对象到文件中
ObjectOutputStream outputStream = null;
try {
    outputStream = new ObjectOutputStream(new FileOutputStream(new File("D://test.txt")));
    // Object
    outputStream.writeObject(new Object());
} catch (IOException e) {
    e.printStackTrace();
}finally {
    if(outputStream!=null){
        try {
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

// 读取序列化文件中被序列化的对象
ObjectInputStream inputStream = null;
try {
    inputStream = new ObjectInputStream(new FileInputStream(new File("D://test.txt")));
    Object obj = inputStream.readObject();
    // ...todo
} catch (Exception e) {
    // IOException or ClassNotFoundException
    e.printStackTrace();
} finally {
    if(inputStream != null){
        try {
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言