1. OutputStream的常用方法write(int i),close(),flush()表示将字节i写入到数据流中,将输出流关闭,刷新输出流并强制写出所有缓冲的输出字节。
  2. Jav中所有涉及数据流的操作中,都会引入包java.io
  3. 请说明输入数据流中方法read()和方法read(byte[] b)的作用是什么:【背】
    方法read()的作用是:从输入流中读取一个字节的二进制数据。
    方法read(byte[] b)的作用是:将多个字节读到数组中,填满整个数组。
  4. Java中把不同的输入、输出源抽象为
  5. 什么是数据流,数据流分为哪些类,各类的特点是什么:【背】
    数据流是指一组有顺序的、有起点和终点的字节集合。
    数据流分为输入数据流和输出数据流,输入数据流只能读不能写,输出数据流只能写不能读。
    从数据流中读取数据时,必须有一个数据源与该数据流相连。

  6. 不是所有对象都可以序列化。

  7. 接口Serilizable中没有定义任何方法,只作为一个标记指示实现该接口的类可以进行序列化。
  8. 一般在关闭输出流之前,应先使用flush()方法,强制输出剩余数据。
  9. 缓冲区的大小可变。
  10. 使用输入数据流中的read()方法,读取结束时返回-1。
  11. 对象序列化可以保存的是非静态成员变量。
    (对象的序列化是将对象的状态转换为字节流,以便保存到文件或通过网络传输。
    序列化关注的是对象的状态,而非类的状态。静态成员变量属于类本身,而非静态成员变量是每个实例对象独有的状态信息。)
  12. 为什么在关闭缓冲区输出流之前应执行flush方法?【背】
    对于缓冲区输出流,当执行写入操作时,数据以块为单位进入缓冲区,当缓冲区的块空间被填满数据时才会真正将数据写到了输出流中。在最后一次执行写入操作后,缓冲区的块空间可能未被填满,所以此时没有将块中的数据真正的写入到输出流中,未真正的执行输出操作,此时若直接向该缓冲区输出流,则块中的数据会丢失。所以,在关闭缓冲区输出流之前,应先使用flush()方法,强制将剩余的数据写入到输出流中。
  13. 请简述过滤器数据流的概念及其种类:【背】
    一个过滤器数据流在创建时与一个已经存在的数据流相连,这样在从这样的数据流中读取数据时,它提供的是对一个原始输入数据流的内容进行了特定处理的数据。
    过滤器数据流有缓冲区数据流和数据数据流两种。
  14. FilelnputStream和FileOutputStream的数据源或数据终点都应当是文件
  15. 顶层容器都有一个内容窗格
  16. Java如何实现对象的序列化?【背】
    Java中有一个接口java.io.Serializable,接口Serializable中没有定义任何方法,只是作为一个标记来指示实现该接口的类可以进行序列化,当一个类声明实现了Serializable接口时,表明该类的对象是可以序列化的,否则不能序列化。
  17. 写Java基本数据类型需要用DataOutputStream
  18. 请写出采用缓冲式输入方式,按行输入文件内容的步骤:
    先创建FilcReaer对象(1分),
    再利用FileReader对象创建BufferedReader对象(1分),
    然后对该对象使用readLine()方法(1分)。
  19. 字节流和字符流
    处理字节流:BufferInputStream & BufferOutputStream,FileInputStream & FileOutputStream,ObjectInputStream & ObjectOutputStream。
    处理字符流:InputStreamReader & OutputStreamWriter(InputStreamReader和OutputStreamWriter是字符流和字节流之间的桥梁,InputStreamReader将字节流转字符流,OutputStreamWriter将字符流转字节流)。
  20. 程序要采用缓冲式输入,只要先创建FileReader对象,再利用FileReader对象创建BufferedReader对象,习惯称为FileReader对象接到BufferedReader对象上。
    1
    2
    3
    4
    BufferReader br;
    FileReader fr=new FileReader("abc.txt");
    br=new BufferReader(fr);//BufferReader实例的参数只能是Reader结尾的类型
    String s=br.readLine();
  21. System.in用于控制台输入数据读取
    转为代码中字符处理的过程:
    1
    InputStreamReader isr=new InputStreamReader(System.in);
  22. 读c盘下java文件夹中的1.data,输出文件名、内容、文件大小:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    File f=new File("C:\\java\\1.data");
    System.out.println("文件名:"+f.getName());
    FileInputStream fis=new FileInputStream(f);
    InputStreamReader isr=new InputStreamReader(fis);
    BufferReader br=new BufferReader(isr);
    System.out.println("文件内容:");
    String s;
    while((s=br.readLine())!=null){
    System.out.println(s);
    }
    System.out.println("文件大小:"+f.length)
  23. 请说明Java基本字符流中读者、写者出现的原因及作用:
    有些程序设计语言使用ASCI字符集,而Java使用Unicode字符集表示字符和字符串。
    ASCII字符集以一个字节表示一个字符,可以认为一个字符就是一个字节。
    Java使用两个字节表示一个字符,这时字节与字符就不再相同。Java为实现与其他程序语言及不同平台的交互,提供了一种新的数据流处理方案,称为读者和写者。读者和写者的作用是在字节流和字符流之间作中介,在构造方法中应指定一定的平台规范,以便把以字节方式表示的流转换为特定平台上的字符表示。
  24. FileWriter类的作用是字符流文件写操作
  25. Java语言使用的字符集是Unicode
  26. 在BufferReader类中,能实现按行输入的方法为readLine

  27. File类不能实现的:写入数据;读写文件;getContent();

  28. File类的重命名文件方法是f.renameTo(nf);,获取文件名getName(),获取文件路径名getPath()
  29. File类的getParent()方法的作用是:获取文件父级目录名称。
  30. Java提供的随机访问文件的类为RandomAccessFile,该类读取一个字符的方法是readChar(),向文件写入一个字符的方法是writeChar()
  31. FileInputStream的read0方法读取各字符的ASCII码
  32. 能够输入输出对象的流称为对象流
  33. 序列化,反序列化
  34. InputStream类能从输入流中读一个字节的二进制数据的方法是read,能将一个字节的二进制数据写入输出流的是write
  35. Java中的缓冲区字符输入流类是BufferedReader,缓冲区字符输出流类是BufferedReader