java笔记-IO流

IO流处理设备之间的数据传输在本地电脑上,我们是站在内存角度 看流的流向​ 看电影 从硬盘中输入​ 写文件 从内存中输出流 按照流向分 分为输入流和输出流​ I InputStream 输入流​ O outputStream 输出流按照流读取文...
摘要由CSDN通过智能技术生成

IO流

处理设备之间的数据传输

在本地电脑上,我们是站在内存角度 看流的流向

​ 看电影 从硬盘中输入

​ 写文件 从内存中输出

流 按照流向分 分为输入流和输出流

​ I InputStream 输入流

​ O outputStream 输出流

按照流读取文件的类型 我们分 字节流和字符流

​ 字节流 读写任意类型文件 Stream

​ 字符流 只能读取文本文件 Reader Writer

A、字节流

字节流继承体系 在java.io包下

字节流分 字节输入流InputStream和字节输出流OutputStream

​ 1. 所有字节输入流父类 InputStream 抽象类

​ a.文件输入流FileInputStream

​ b. ByteArrayInputStream

​ c. ObjectInputStream

​ 2. 所有字节输出流父类 OutputStream 抽象类

​ a.文件输出流FileOutputStream

​ b. ByteArrayOutputStream

​ c. ObjectOutputStream

1.文件输出流FileOutputStream

文件输出流是用于将数据写入 FileFileDescriptor 的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个 FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。

FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter

a.构造方法
1.
FileOutputStream(File file);

File file = new File("a.txt");输出流关联的文件,如果文件不存在,那么运行时系统会自动帮你创建
FileOutputStream out = new FileOutputStream(file);
2.
FileOutputStream(String name);
FileOutputStream out = new FileOutputStream("a.txt");
3.
FileOutputStream(String name,boolean);
FileOutputStream(File file,boolean);
true代表追加写入  每运行一次程序在原来基础上再写一次
false代表不追加
b.写出数据

通过文件输出流,向其所关联的文件中,写出数据

FileOutputStream out = new FileOutputStream("a.txt");
wirte();//参数类型  int b / byte[] b / byte[] b,int off,int len
out.write();//一次写入一个字节
out.write(97);//打开文件后看到a
out.write(300);//超过一个字节的范围,会丢弃多余字节

byte[] bytes = {
   101,102,103,104};
out.write();//一次写入一个字节数组
out.write(bytes,2,2);//一次写入一个字节数组一部分,从2索引开始,写2个字节  结果  gh

String str = "杨家有女初长成";
byte[] bytes = str.getBytes();//将一个字符串转为字节数组
//UTF-8编码  一个汉字3个字节
out.write(bytes);

out.write("回眸一笑百媚生,六宫粉黛无颜色".getBytes());
out.write("\r\n".getBytes());//写入一个回车换行符
//每个平台系统的换行符都不一样  
//windows平台 换行符 \r\n
//Linux    \n

流用完之后必须释放资源,否则会有内存移除的风险 
1.通知系统释放管理关联文件的资源
2.让IO流变成垃圾,等待垃圾回收器回收
out.close();//关闭流  释放资源



2.文件输入流FileInputStream

FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。

FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader

a.构造方法
FileInputStream(String name);
FileInputStream(File file);


File file = new File("e.txt");输入流所关联的文件如果不存在就会报错
FileInputStream in = new FileInputStream(file);//输入流所关联的文件如果不存在就会报错

FileInputStream in = new FileInputStream("a.txt");



b.读取文件中数据
read();//参数类型  byte b / byte[] b / byte[] b,int off,int len



FileInputStream in = new FileInputStream("a.txt");
//a.txt  内容  abcdef
int code = in.read();//一次读取一个字节  97
int code = in.read();//最后读不到时   返回-1
in.close();使用完后关闭释放资源

//创建一个空的字节数组充当缓冲区
byte[] bytes = new byte[1024];
int len = in.read(bytes);//将最多bytes长度个code数据存入bytes中  返回实际存入的code个数     
//一次读取1024个字节,放到这个缓冲区中  len就是实际读取的长度 6

int len = in.read(bytes,0,3);//将最多3个数据存入bytes中,并将第一个数据存为bytes[0]

String str = new String(bytes,0,3);
in.close();


字符串转字节数组
byte[] bytes = "abc".getBytes();
字节数组转字符串
String str = new String(bytes);


3.文件复制
a.单字节读写
FileInputStream in = new FileInputStream("a.txt");
FileOutputStream out = new FileOutputStream(<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值