A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fmi110 高级黑马   /  2015-8-10 18:05  /  318 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO
  1. IO 包中的其他对象:
  2.         1 打印流
  3.                 PrintStream:
  4.                         是一个字节打印流,System.out 对应的类型就是PrintStream
  5.                         它的构造函数可以接受三种数据类型的值
  6.                         1 字符串路径
  7.                         2 File 对象
  8.                         3 OutputStream

  9.                 PrintStream(File file, String csn)
  10.                          创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
  11.                 PrintStream(OutputStream out, boolean autoFlush, String encoding)
  12.                          创建新的打印流。
  13.                 PrintStream(String fileName, String csn)
  14.                          创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
  15.        
  16.                 PrintWriter
  17.                         是一个字符打印流。构造函数可以接受四种类型的值。

  18.                         1 字符串路径
  19.                         2 File 对象
  20.                                 对于1 2类型的数据,还可以指定编码表,即字符集
  21.                         3 OutputStream
  22.                         4 Writer
  23.                                 对于3 4类型的数据,可以指定自动刷新
  24.                                 注意:该自动刷新值为true时,只有三个方法可以用:println,printf,format
  25.        
  26. 如果要自动刷新,有可以指定编码,应该如何进行封装?

  27.         PrintWriter pw = new PrintWriter((new OutputStreamWriter(new FileOutputStream("1.txt")),"utf-8"),true);

  28. 加缓冲
  29.         PrintWriter pw = new PrintWriter(
  30.                 BufferedWriter(new OutputStreamWriter(new FileOutputStream("1.txt")),"utf-8"),true));


  31.         2、管道流
  32.                 PipedInputStream
  33.                 PipedOutputStream

  34.                 特点:
  35.                         读取管道流和写入管道流可以进行连接。
  36.                         连接方式:
  37.                                 1 通过两个流对象的构造函数
  38.                                 2 通过调用两个对象的connect()方法

  39.                 注意:通常两个流在使用时,需要加入多线程技术,也就是让读写同时运行。

  40.                 因为read()方法是阻塞式的,也就是说没有数据的情况下,该方法会等待。

  41.         3、 RandomAccessFile
  42.                 该对象并不是流体系中的一员。该对象中封装了字节流,同时还封装了一个
  43.                 缓冲区(字节数组),通过内部的指针来操作数组中的数据。

  44.                 该对象的特点:
  45.                         1 该对象只能操作文件,所以构造函数接受两种类型的参数。
  46.                                 a 字符串路径
  47.                                 b File 对象
  48.                         2 该对象既可以对文件进行读取,也可以进行写入
  49.                                 在进行对象实例化时,必须要指定指定该对象的操作模式,r rw

  50.                 RandomAccessFile(File file, String mode)
  51.                         创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。
  52.                 RandomAccessFile(String name, String mode)
  53.                         创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。
  54.                        
  55.         该对象有直接操作基本数据类型的方法

  56.                 int read()
  57.           从此文件中读取一个数据字节。
  58.                 int read(byte[] b)
  59.           将最多 b.length 个数据字节从此文件读入 byte 数组。
  60.                 int read(byte[] b, int off, int len)
  61.           将最多 len 个数据字节从此文件读入 byte 数组。
  62.                 byte readByte()
  63.                                   从此文件读取一个有符号的八位值。
  64.                 char readChar()
  65.                                   从此文件读取一个字符。
  66.                 double readDouble()
  67.                                   从此文件读取一个 double。
  68.                 float readFloat()
  69.                                   从此文件读取一个 float。
  70.                 void readFully(byte[] b)
  71.                                   将 b.length 个字节从此文件读入 byte 数组,并从当前文件指针开始。
  72.                 void readFully(byte[] b, int off, int len)
  73.                                   将正好 len 个字节从此文件读入 byte 数组,并从当前文件指针开始。
  74.                 int readInt()
  75.                                   从此文件读取一个有符号的 32 位整数。
  76.                 String readLine()
  77.                                   从此文件读取文本的下一行。
  78.                                   
  79.                 write(int b); 写入1个字节,高位丢弃
  80.                 writeInt(int b);写入四个字节

  81.         该对象独特的 方法:
  82.                 skipBytes():跳过指定的字节数
  83.                 seek();指定指针的位置
  84.                 getFilePointer();获取指针的位置

  85.                 通过这些方法,就可以完成对一个文件数据的随机访问。

  86.                 该对象可以读数据,可以写数据,如果写入位置已有数据,原数据会被覆盖,
  87.                 即可以修改数据。

  88.                 注意:该对象在实例化时,如果要操作的文件不存在则自动建立。
  89.                 如果操作的文件存在,则不会建立,如果存在的文件有数据。
  90.                 在没有指定指针位置的情况下,写入数据,数据会从头开始写。

  91.                 对于数据有规则或者分段的数据,可以使用多线程,分段写入数据,提高速率。
复制代码


8 个回复

倒序浏览
   第一天IO     感觉不好学..
回复 使用道具 举报
q985274961 来自手机 中级黑马 2015-8-10 21:33:35
藤椅
io难学吗,复杂不复杂,有没有需要理解的地方
回复 使用道具 举报
q985274961 发表于 2015-8-10 21:33
io难学吗,复杂不复杂,有没有需要理解的地方

还好吧,需要理解的地方有一些  但是都不是太难,视频里老师都讲的很清楚
就是需要多自己打代码,把调用方法记熟就可以了
回复 使用道具 举报
铿锵的小黑马 发表于 2015-8-10 21:08
第一天IO     感觉不好学..

再看一天就会发现没那么难了  多打下练习代码   
回复 使用道具 举报
fmi110 发表于 2015-8-10 22:31
还好吧,需要理解的地方有一些  但是都不是太难,视频里老师都讲的很清楚
就是需要多自己打代码,把调用 ...

关键是多练,多写是吧,自己理解了不代表会写
回复 使用道具 举报
风华正茂 来自手机 中级黑马 2015-8-11 12:41:40
7#
谢谢楼主分享
回复 使用道具 举报
q985274961 来自手机 中级黑马 2015-8-12 23:23:31
8#
我又来评论了
回复 使用道具 举报
fmi110 高级黑马 2015-8-14 10:39:01
9#

哈哈 谢谢谢谢
你看到哪了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马