操作基本数据类型的流

数据输入流:DataInputStream

DataInputStream(InputStream in)

数据输出流:DataOutputStream

DataOutputStream(OutputStream out)

内存操作流:用于处理临时存储信息的,程序结束,数据就从内存中消失

操作字节数组

ByteArrayIntputStream

ByteArrayOutputStream

操作字符数组

charArrayReader

charArrayWriter

操作字符串

StringReader

StringWriter

打印流特点:

只能操作目的地,不能操作数据源

可以操作任何类型的数据

如果启动了自动刷新,能够自动刷新

可以操作文件的流(打印流复制文本文件)

流:

基本流:就是能够直接读写文件的流;

高级流:在基本流的基础上提供了一些其他的功能

哪些流对象可以直接操作文本文件呢

FileInputStream

FileOutputStream

FileReader

FileWriter

PrintStream

PrintWriter

看API,查流对象的构造方法,如果同时有File类型和String类型的参数,一般来说就是可以直接操作文件的流

PrintWriter

1.可以操作任意类型的数据

print() println()

2.启用自动刷新

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

还是应该调用println的方法才可以

这个时候不仅仅自动刷新了 还实现了数据的换行

println()等价于

bw.writer();

bw.newLine();

bw.flush();

标准输入输出流

system类中的字段:in,out

它们各代表了系统标准的输入和输出设备

默认输入设备是键盘,输出设备是计算器

System.in的类型是InputStream

System.out的类型是PrintStream是OutputStream的子类FilterOutputStream的子类

键盘录入数据:(三种)

A:main方法的arg接收参数

java helloWorld hello world java

B:Scanner(JDK5以后的)

Scanner sc=new Scanner(System.in);

String sc=sc.nextLine();

int x=sc.nextInt();

C:通过字符缓冲流包装标准输入流实现

BufferedReader br=new BufferedReader(new InputStreamReader(System.in))

String line=br.readLine();

int i=Integar.parseInt(br.readLine());

随机访问流

RandomAccessFile概述

RandomAccessFile类不属于流,是Object类的子类,但它融合了InputStream和OutputStream的功能,支持对随机访问文件读取和写入

public RandomAccessFile(String name,String mode):

第一个参数是文件的路径,第二个参数是操作文件的模式,模式有四种,我们最常用的一种叫“rw”,这种方式表示我既可以读也可以写数据

合并流:

SequenceInputStream概述

SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因此该流也称为合并流

SequenceInputStream的构造方法

SequenceInputStream(InputStream s1,InputStream s2)

sequenceInputStream(Enumeration<?extends InputStream> e)

把多个文件的内容写入到一个文本文件

序列化流:

把对象按照流一样的方式存入文本文件或在网络中传输

objectOnputStream 对象-------------->数据流

反序列化流:

把文本文件或网络中的流对象数据还原成对象

objectInputStream 数据流---------->对象

实现序列化:

注意:为序列化异常(NotserializableException)

类通过实现java.io.Serializable 接口以启用序列化功能,未实现此接口将无法使其任何状态序列化和反序列化(该接口居然没有任何方法,类似这种没有方法的子类被称为标记接口)

我们要知道的是:

看到此类实现了序列化接口的时候,想要解决黄色警告线的问题,就可以自动产生一个序列化ID值,而产生这个值以后,我们对类的任何 改动,它读取以前的数据是没有问题的

注意:一个类中可能有很多成员变量,有些我们不想序列化,请问该怎么办呢,使用transient关键字声明不需要序列化的成员变量

猜你喜欢

转载自blog.csdn.net/qq_40935960/article/details/94960175