• Java面试题IO流


    字节流与字符流的不同是他们的处理方式,字节流是最基本的,采用ASCII编码。

    但是实际上很多数据是文本,所以提出字符流的概念,采用unicode编码

    两者之间通过inputStreamReader与outputStreamWriter来关联,实际上是通过byte[]与String来关联

    字节流输出: 程序-->字节流-->文件

    字符流输出:程序-->字符流-->缓冲-->文件

    程序中所有的数据都是以流的方式进行传输与保存的

    在关闭字符流后会强制性的将缓冲区的数据输出,若没有关闭缓冲区的内容是无法输出的,

    如果想不关闭并且还想输出缓冲区的内容,用writer类的flush()方法来完成,

    try{

    fis=new FileInputStream("c:\db\hello.txt");     //存在的

    fos=new FileOnputStream("c:\hello.txt");       //需要的

    }

    .java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
    字节输入流:InputStream,字节输出流:OutputStream

    字符输入流:Reader,字符输出流:Writer

    .解释一下java.io.Serializable接口(面试常考)

    类通过实现 Java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。

    1.PrintStream、BufferedWriter、PrintWriter的比较? 
    PrintStream类的输出功能非常强大,通常如果需要输出文本内容,都应该将输出流包装成PrintStream后进行输出。

    与其他输出流不同,PrintStream 永远不会抛出 IOException;而是,异常情况仅设置可通过 checkError 方法测试的内部标志

    另外,为了自动刷新,可以创建一个 PrintStream

    BufferedWriter:将文本写入字符输出流,缓冲各个字符从而提供单个字符,数组和字符串的高效写入。通过write()方法可以将获取到的字符输出,然后通过newLine()进行换行操作。BufferedWriter中的字符流必须通过调用flush方法才能将其刷出去。并且BufferedWriter只能对字符流进行操作。如果要对字节流操作,则使用BufferedInputStream。

     PrintWriter的println方法自动添加换行,不会抛异常,若关心异常,需要调用checkError方法看是否有异常发生,PrintWriter构造方法可指定参数,实现自动刷新缓存(autoflush);

    .什么是java序列化,如何实现java序列化?
    Java对象的序列化指将一个java对象写入OI流中,与此对应的是,对象的反序列化则从IO流中恢复该java对象。
    如果要让某个对象支持序列化机制,则必须让它的类是可序列化的,为了让某个类是可序列化的,该类必须实现Serializable接口或Externalizable接口



  • 相关阅读:
    查找大文件 & 索引节点(inode)爆满 解决办法
    技术领导力 —— 左耳听风 专栏读后感
    左耳朵耗子关于技术变现一文读后感
    html--前端jquery初识
    html--JavaScript之DOM (文档对象模型)
    html--前端JavaScript基本内容
    html--前端javascript初识
    html--前端css常用属性
    html--前端css样式初识
    html--前端基本标签内容讲解
  • 原文地址:https://www.cnblogs.com/thomasbc/p/6639495.html
Copyright © 2020-2023  润新知