IO流总结

什么叫IO流?
IO包括输入和输出流,输入流指的是将数据以字符或字节形式从外部媒介比如文件、数据库等读取到内存中所以也分为字符输入流和字节输入流。
输出流指的是将内存中的数据写入外部媒介,也分为了字符输出流和字节输出流。
注意:(这里的输出输入是站在内存的角度上来理解的,所以输出才是写入文件,输入是读取文件)
文件不仅仅可以保存数字和其他的。还可以保存对象,通过对象调用相关参数
一、IO流的三种分类方式。
1.按流的方向分为:输入流和输出流。
2.按流的数据单位不同分为:字节流和字符流。
3.按流的功能不同分为:节点流和处理流。
二、IO流的四大抽象类。

1.按流的方向分为:输入流和输出流

2.按流的数据单位不同分为:字节流和字符流

3.按流的功能不同分为:节点流和处理流(过滤流)

节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。

过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。

二、IO流的四大抽象类:

字符流:Reader
Writer

字节流:InputStream(读数据)

OutputStream(写数据)

三、InputStream的基本方法

int read() throws IOException 读取一个字节以整数形式返回,如果返回-1表示已到输入流的末尾

void close() throws IOException 关闭流释放内存资源

long skip(long n) throws IOException 跳过n个字节不读

四、OutputStream的基本方法

void write(int b) throws IOException 向输出流写入一个字节数据

void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地

五、Writer的基本方法

void write(int c) throws IOException 向输出流写入一个字符数据

void write(String str) throws IOException将一个字符串中的字符写入到输出流

void write(String str,int offset,int length)将一个字符串从offset开始的length个字符写入到输出流

void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地

六、Reader的基本方法

int read() throws IOException 读取一个字符以整数形式返回,如果返回-1表示已到输入流的末尾(上面已经写了)


下面两个方法是实现五子棋保存的,与重新打开的方法,在原程序里的监听器里面只需要把五子棋对象保存到一个队列里面就好了(list队列)
//写一个写入方法,将数据保存到文件里面
public boolean write(String fileName) throws IOException {
// FileInputStream fis = new FileInputStream(list.get(i));
this.list = cl.list;
//写入对象
FileOutputStream fos = new FileOutputStream(fileName);//
ObjectOutputStream out = new ObjectOutputStream(fos);
// 写入队列的长度
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(list.size());
for (int i = 0; i < list.size(); i++) {
Chess chess = list.get(i);
out.writeObject(chess);
// System.out.println("aaaaaaaaaaa");
out.flush();
}
//写完文件后关闭文件
dos.close();
out.close();
return true;
}
//定义一个打开文件的方法
public boolean open(String fileName) throws IOException,ClassNotFoundException {
// for (int i = 0; i < list.size(); i++) {
FileInputStream fis = new FileInputStream(fileName);
ObjectInputStream input = new ObjectInputStream(fis);
//首先读取原来队列的长度,即对象的个数
DataInputStream dis = new DataInputStream(fis);
int listSize = dis.readInt();
for (int i = 0; i <listSize; i++) {
//强制转型,读出对象
Chess chess = (Chess) input.readObject();
//判断并设置画布的颜色
if(chess.getColor()==1){
g.setColor(Color.black);
}else{
g.setColor(Color.WHITE);
}
System.out.println(chess.getI()+"ppppppppppppppp"+ chess.getJ());
g.fillOval(chess.getI()+Config.CHESS_SIZE /4, chess.getJ()+Config.CHESS_SIZE ,
Config.SIZE, Config.SIZE);
// chess = (Chess) input.readObject();
}
//数据读取完毕,关闭文件
dis.close();
input.close();
return true;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值