Java基础第五篇IO概述小白专属

33.IO 概述

java 是IO操作  称之为 Java的输入输出流

I 指的是 InputStream  输入流

O指的是OutputStream 输出流

Java是IO操作简单的说就是通过Java代码对文件内容进行 读(in)写(out)操作【读进来写出去】

Java流的分类

按流向分:

输入流:程序可以从中读取数据的流

输出流:程序能向其中写入数据的流

按照数据传输单位分:

字节流:以字节为单位传输数据的流

字符流:以字符为单位传输数据的流

按功能分:

节点流:用于直接操作目标设备的流

—基流

过滤流:是对一个已存在流的链接和封装,通过对数据进行处理为程序提供功能强大,灵活的读写功能

—包装流

四大基流:

字节输入流:InputStream

字节输出流:OutputStream

字节输入流:Reader

字符流出流:Weiter

34.字节流出流

第一种方式

public void test05() throws Exception{

OutputStream out = new FileOutputStream("E:/123/aaa.txt");

out.write(100);

out.close();

}

第二种方式

public void test05() throws Exception{

OutputStream out = new FileOutputStream("E:/123/aaa.txt");

byte[] data = "hello world".getBytes();

out.write(data);

out.close();

}

第三种 追加模式

public void test05() throws Exception{

OutputStream out = new FileOutputStream("E:/123/aaa.txt",true);

byte[] data = "hello world".getBytes();

out.write(data);

out.close();

}

第四种方式

public void test05() throws Exception{

OutputStream out = new FileOutputStream("E:/123/aaa.txt",true);

byte[] data = "abcdefghijklmn".getBytes();

out.write(data,3,9);

out.close();

}

35.字节输入流

第一种方式

public void test06() throws Exception {

InputStream in = new FileInputStream("E:/123/aaa.txt");

int read1 = in.read();

int read2 = in.read();

int read3 = in.read();

int read4 = in.read();

in.close();

}

第二种方式

public void test06() throws Exception {

InputStream in = new FileInputStream("E:/123/aaa.txt");

byte[] data = new byte[30];

int i = in.read(data);

本次读取的个数

System.out.println(i);

String s = new String(data,0,i);

in.close();

}

———-循环读取文件内容

public void test06() throws Exception {

InputStream in = new FileInputStream("E:/123/aaa.txt");

byte[] data = new byte[30];

int length = 0;

StringBuilder sb = new StringBuilder();

while( (length = in.read(data)) > 0 ){

sb.append(str);

}

System.out.println(sb);

in.close();

1.2包装流-对象包装流

当我们在java中写了一句代码 People p1 = new People("zhangsan",18); 此时我们运行程序 首先在cpu中会分配一个进程给JVM。JVM进行类加载... 执行代码 遇到我们写的这句代码 就会在JVM的 堆区创建对象内存

存储对象信息

当我们代码执行结束 JVM退出 进程就释放了。 我们如果想将堆区对象数据 持久化到硬盘中 就需要使用 对象包装流。

1.3对象序列化

java.io.NotSerializableException: com.aaa.day01.test09.Role 当我们将Role 对象使用对象流输出到指定文件中的时候 此时抛出这个异常:Role 未序列化异常

序列化: 将 java对象转换成 二进制数据流的过程

反序列化: 将 二进制数据流 还原成 java对象的过程

在IO操作 为什么称之为 输入输出流? 就是输出输入的是二进制数据流 那次是我们的Role 没法序列化 意思就是说 这个对象转换不成二进制数据流 此时 IO就无法将其输入 输出

创建了一个接口,如果你的类希望使用底层的序列化操作 那么你就实现这个接口 如果你不希望当前类被序列化 则不实现这个接口 所以这个接口的作用就是 : 添加标记 public class Role implements Serializable {}

到这里基本上Java 基础都总结结束了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值