有关IO流的其他常用流

操作基本数据类型的流、内存操作流、打印流、标准输入流和标准的输出流、随机访问流、合并流、序列化流/反序列化流、属性集合类

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

DataInputStream :数据输入流

DataOutputStream:数据输出流

可以操作一些基本数据类型

egg:

DataOutputStream dos = new DataOutputStream(new FileOutputStream("dos.txt"));

das.writeByte(10);

das.writeShort(100);

das.writeInt(1000);

das.writeLong(10000L);

das.writeFloat(12.34F);

das.writeDouble(12.56);

das.writeBoolean(true);

das.writeChar(‘A‘);

DataInputStream dis = new DataInputStream(new FileInputStream("das.txt"));

System.out.println(dis.readByte());

System.out.println(dis.readShort());

System.out.println(dis.readInt());

System.out.println(dis.readLong());

System.out.println(dis.readFloat());

System.out.println(dis.readDouble());

System.out.println(dis.readBoolean());

System.out.println(dis.readChar());

dos.close();

dis.close();

二、内存操作流

用来存储内存中的临时信息,程序结束,内存流消失

字节数组操作内存流:

ByteArrayInputStream

ByteArrayOutputStream

字符数组操作的内存流:

CharArrayReader

CharArrayWriter

字符串操作的内存流:

StringReader

StringWriter

egg:

ByteArrayOutputStream baos = new ByteArrayOutputStream();

baos.write("hello".getBytes());

byte[] bys = baos.toByteArray();

ByteArrayInputStream bais = new ByteArrayInputStream(bys);

int by=0;

while((by=bais.read())!= -1){

System.out.print((char)by);

}

该流的close方法没有任何的操作,该流可以不用关闭

三、打印流(只能写数据,不能读数据)

1、字节打印流:PrintStream

构造方法:

printStream ps = System.out;

写数据:

println()带换行

print()

System.out.println();

2、字符打印流:PrintWriter

egg:

PrintWriter pw = new PrintWriter("pt.txt") ;

pw.write("hello");

pw.flush();

pw.close();

字符打印流的一个构造方法:可以进行自动刷新

public PrintWriter(Writer out, boolean autoFlush)第二个参数的值为:true则自动刷新

egg:

PrintWriter pw = new PrintWriter(new FileWriter("pw2.txt"), true);

pw.println("hello"); //使用print()不换行写入操作

pw.close();

四、标准输入流和标准的输出流

1、System类中的字段

public static final InputStream in   标准输入流

InputStream in = System.in; 字节输入流

public static final PrintStream out  标准输出流

PrintStream out = System.out;:字节打印流

2、直接使用标准输入流录入数据

BufferedReader br = new BufferedReader(new OutputStreamReader(System.in));

//使用装换流将字节流装换为字符流传给字符缓冲流

System.out.println("请输入一个字符串:");

String line = br.readLine(); //录入数据

System.out.println(line);

br.close();

3、直接使用标准输出流输出数据

BufferedWriter bw = new BufferedWriter(new InputStreamWriter(System.out));

bw.write("hello");

bw.newLine();

bw.close();

五、随机访问流 —— RandomAccessFile(并不是实际意义的流)

类的实例支持对随机访问文件的读取和写入,融合了InputStream和OutputStream两个类

1、构造方法:

public RandomAccessFile(String name,String mode) mode:常用的就 rw:既可以读,也可以写

egg:

RandomAccessFile raf = new RandomAccessFile("raf.txt","rw");

raf.writeByte(97);

raf.writeChar(‘A‘);

raf.writeUTF("中国");

System.out.println(raf.readByte());

System.out.println(raf.readChar());

System.out.println(raf.readUTF()); //读取一个字符串

raf.close();

2、特殊方法:

public long getFilePointer(),返回此文件的偏移量

//到此文件开头的偏移量(以字节为单位),在该位置发生下一个读取或写入操作。

六、合并流 —— SequenceInputStream(只能合并输入流)

1、构造方法:

public SequenceInputStream(InputStream s1,InputStream s2) 先读取 s1,然后读取 s2,将两个输入流合并

public SequenceInputStream(Enumeration<? extends InputStream> e)

//将多个输入流对象添加到Vector集合,通过v.elements()方法产生Enumeration对象传入合并流,使得多个输入流合并

2、将e:\\a.txt和b.txt复制到c.txt

七、序列化流和反序列化流

1、概述

序列化流:ObjectOutputStream

将对象按照流的形式封装成流数据:对象--->流数据

反序列化流:ObjectInputStream

将流数据又封装成了一个对象: 流数据-->对象

2、实现方式:

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

Serializable接口中没有字段,构造方法,成员方法,所有如果一个接口中没有任何的方法或者他的字段,将这种接口叫标记接口!

1)该类实现Serializable接口

2)private static final long serialVersionUID = 1L; //给当前类定义一个ID

重写toString()方法

不然的话,在读数据过程中如果中途对类有所修改,会报java.io.InvalidClassException异常

注意:如果在一个类中,有时候为了让成员变量不被序列化,加一个关键字:transient

3)创建序列化流和反序列化流对象,创建需要序列化类的对象;

4)oos.writeObject(obj)写

5)ois.readObject()读

6)关闭所有的流

八、属性集合类 —— Properties

1、概述:

Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载

这个类是Hashtbale的子类,而Hashtable是Map下面的双列集合,所以,Properties使用put()方法,添加元素

且,没有泛型

2、特殊方法

public Object setProperty(String key,String value):和添加相关的

public Set<String> stringPropertyNames():获取所有的键的集合

public String getProperty(String key):获取指定的属性集合中的键的值

public void load(Reader reader):将文本文件的数据读取集合中

public void store(Writer writer, String comments):将集合中的数据保存到文本文件中

//comments:属性列表的描述

时间: 2024-08-08 01:26:15

有关IO流的其他常用流的相关文章

java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等

原文:java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等 源代码下载:http://www.zuidaima.com/share/1550463397366784.htm ava 常用流处理工具 StreamTool ,常见的InputStream 流转字符串, 转字节数组等等 **应用场景: ** 1. 文件上传 2. js / css / img 等文件读取输出. 转字符串输出 (js & css) , 转字节数组输出 (img .. swf

Java IO流体系中常用的流分类

Java输入/输出流体系中常用的流分类 (表内容来自http://www.cnblogs.com/moonpool/p/5488463.html) 注:下表中带下划线的是抽象类,不能创建对象.粗体部分是节点流,其他就是常用的处理流. 流分类 使用分类 字节输入流 字节输出流 字符输入流 字符输出流   抽象基类 InputStream OutputStream Reader Writer 节点流 访问文件 FileInputStream FileOutStream FileReader File

io系列之常用流一

一. 读取键盘录入和数据打印 在System类中, System.out: 对应的是标准输出设备(控制台)(一个PrintStream). System.in: 对应的是标准输入设备(键盘)(一个InPutStream). 由System.in的定义可知 :public static final InputStream in : in属性本身是一个字节输入流对象,  可有: InputStream in = System.in; 其read方法是读入一个从键盘上输入的字节. 由System.ou

黑马程序员—IO(一)流概述、字符流、字节流、流操作规律

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一节     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按其操作数据的类型分为两种:字节流和字符流. 5)流按其流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:Inp

黑马程序员——IO流概述、字符流、字节流、流操作规律(一)

第一节     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按其操作数据的类型分为两种:字节流和字符流. 5)流按其流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Writer 注:此四个

Java基础---IO(一)---IO流概述、字符流

   IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按操作数据分为两种:字节流和字符流. 5)流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Writer 注:此四个类派生出来的子类名称

Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按操作数据分为两种:字节流和字符流. 5)流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Writer 注:此四个类派生出来

10.4-全栈Java笔记:常用流详解(二)

上节我们讲到「Java中常用流:文件字节流和字节数组流」,本节我们继续走起~  缓冲流 BufferedInputStream和BufferedOutputStream这两个流是处理流,通过内部缓存数组来提高操作流的效率. [示例1]使用缓冲流实现文件的高效率复制操作 public class Demo06 { public static void main(String[] args) { new Demo06().copyFile("d:/a.txt", "d:/b.tx

java IO的字节流和字符流及其区别

1. 字节流和字符流的概念    1.1 字节流继承于InputStream    OutputStream,    1.2 字符流继承于InputStreamReader    OutputStreamWriter.在java.io包中还有许多其他的流,主要是为了提高性能和使用方便. 2. 字节流与字符流的区别    2.1 要把一片二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一片二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作,用一种抽象的方式进行描述,这