Java中的特殊IO流以及NIO流的部分特性

一、操作基本数据类型的流

1、 DataInputStream数据输出流
 a) 构造方法:
  DataInputStream (InputStream in)
 b) 成员方法
  i. writeByte ()
  ii. writeShort ()
  iii. writeInt ()
  iv. writeLong ()
  v. writeFloat ()
  vi. writeDouble ()
  vii. writeChar ()
  viii. writeBoolean ()
2、 DataOutputStream数据读入流
 a) 构造方法:
  DataOutputStream (OutputStream out)
 b) 成员方法
  i. ReadByte ()
  ii. ReadShort ()
  iii. ReadInt ()
  iv. ReadLong ()
  v. ReadFloat ()
  vi. ReadDouble ()
  vii. ReadChar ()
  viii. ReadBoolean ()

二、内存操作流

用于处理临时存储信息,程序结束数据从内存消失,不需要调用close()
1、 操作字节数组
 a) ByteArrayInputStream
  i. 成员方法
   ByteArrayInputStream (Byte []b)创建一个ByteArrayInputStream,使用buf作为其缓冲区数组
 b) ByteArrayOutputStream
  i. 成员方法
   ByteArrayOutputStream()创建一个字节数组缓冲区流
2、 操作字符数组
 a) CharArrayReader
 b) CharArrayWrite
3、 操作字符串
 a) StringReader
 b) StringWriter

三、打印流

1、 字节打印流:PrintStream
 构造方法与字符打印流相类似
2、 字符打印流:PrintWriter
 a) 构造方法
  i. PrintWriter (File file)
  ii. PrintWriter (File file , String csn)
  iii. PrintWriter (String s)
  iv. PrintWriter (OutputStream os, boolean autoFlush)
  v. PrintWriter (String fileName)
  vi. PrintWriter (String fileName , String csn)
  vii. PrintWriter (Writer out)
  viii. PrintWriter (Writer out , boolean autoFlush)
    autoFlush为true,且调用println()、printf(),format()方法则自动刷新
3、 特点:
 a) 只能操作目的地,不能操作数据源,只有写数据,没有读数据
 b) 可以操作任意类型的数据print(),println()
 c) 如果启动了自动刷新,可以自动刷新
 d) 可以操作文件的流
4、 成员方法
 a) Writer的子类,可以用Writer中的成员方法
 b) print (a); a可以为任意类型的数据
 c) println (a); a可以为任意类型的数据,自动换行,且可以自动刷新
  等于同时实现write(); newLine(); flush();这三个方法的功能

四、随机访问类RandomAccessFile

按照文件指针的位置读取写入数据,不属于流,是object类的子类,
融合了InputStream和OutputStream的功能
1、 构造方法
 a) public RandomAccessFilie (String name , String mode )第一个参数是文件路径,
  第二个参数是操作文件的模式mode共有四种,常用rw模式,这时可以读、写数据
2、 成员方法
 a) public long getFilePointer() 返回此文件中当前偏移量,偏移量与数据类型所占的字节数有关
 b) public void seek(long i)设置此文件开头测量到的文件指针偏移量为i,
  在该位置发生下一个读取或写入操作

五、合并流SequenceInputStream(InputStream的子类)

将多个输入流串流在一起,合并为一个输入流。只提供读功能
1、 构造方法
 a) SequenceInputStream(InputStream s1,InputStream s2)
  将S1和S2两个流的内容合并到一个流中
 b) SequenceInputStream(Enumeration e)
  可以同时添加多个输入流
  Enumeration是Vector中的一个方法的返回值类型用法:
 用法实例:

	Vector <InputStream> v=new Vector <InputStream>();
	InputStream s1=new FileInputStream("a1.txt");
	InputStream s2=new FileInputStream("a2.txt");
	InputStream s3=new FileInputStream("a3.txt");
	v.add(s1);
	v.add(s2); 
	v.add(s3);
	Enumeration<InputStream> en=v.elements();
	SequenceInputStream sis=new SequenceInputStream(en) ;
六、序列化流ObjectOutputStream和反序列化流ObjectInputStream

序列化流:把对象按照一定方式存入文本文件或者在网络中传输。
 对象->流
反序列化流:把文本文件或网络中的流对象数据还原成对象
 流->对象
ObjectOutputStream将Java对象的基本数据类型和图形写入到OutputStream中
ObjectInputStream重构Java对象
1、 构造方法
 a) ObjectOutputStream (OutputStream out)
 b) ObjectInputStream (InputStream in)
2、 成员方法
 a) public final void writeObject(Object obj)将对象写入流中
 b) public final Object readObject()将流中对象还原出来
3、 进行序列化对象的类必须实现Serializable接口,该接口没有任何方法,被称为标记接口
4、 实现序列化接口后会产生一个ID值,最好固定此ID值,
  如果此ID值不被固定对类进行任何改动都会造成读取失败

七、Properties:属性集合类(Hashtable的子类),

可以和IO流相结合使用的键值对集合类,可保存在流中或从流中加载,
属性列表中的每个键及其对应的值都是一个字符串,不是一个泛型类
1、 特殊功能
 a) public Object setProperty (String key , String value)添加元素
 b) public String getProperty (String key)获取元素,根据键获取值
 c) public Set stringPropertyNames ()获取所有的键集合
 d) public void load ( Reader reader)
  public void load ( InputStream is)
  把文件中的数据读取到集合中,文件中的数据必须是键值对形式
 e) public void store (Writer writer, String comments)
  public void store (OutputStream os, String comments)
  把集合中的数据存储到文件中,comments为属性列表的描述,可以写为null

八、NIO(新IO)

1、 NIO和IO都是用于进行输入输出的,但NIO采用内存映射文件的方式,将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样访问文件,提高效率。
2、 Path:与平台无关的路径
3、 Paths:包含了返回Path的静态方法
  public static Path get(URI uri)根据uri来确定文件路径
4、 Files:操作文件的工具类。包含大量的方法,
 a) public static long copy(Path source, OutStream out) 复制文件
 b) public static Path write(Path path ,
    Iterable <?extends CharSequence> lines , Charset cs, OpenOption…options)
  …代表可变参数, cs为编码方式

九、标准输入输出流

1、 System类下面有两个字段
 a) in 标准输入流
 b) out标准输出流
2、 三种键盘录入方式
 a) main方法的args接收参数
 b) System.in通过BufferedReader进行包装
  BufferedReader br=new BufferedReader(new InputStreamReader (System. in))
 c) Scanner
  i. Scanner sc=new Scanner(System.in);
  ii. String s=sc.nextLine(); int i=sc.nextInt();
3、 输出语句原理以及如何使用字符流输出数据
 a) 原理
  i. System.out.println(“HelloWorld”);
      等价于
  ii. PrintStream ps=System.out;
   ps.println(“HelloWorld”);
 b) 把System.out通过BufferedWriter包装
  BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值