IO流简单学习知识点
来源:互联网 发布:文本数据挖掘 编辑:程序博客网 时间:2024/06/05 16:37
流是一组有顺序的,有起点和终点的字节/字符集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
输入input 文件——》程序======输入流
输出output 文件《——程序======输出流
(站在程序角度来看是输出还是输入)
一、IO的分类
按照数据单位分类:
字节流(8bit 传输视频、图片)
字符流(16bit 传输文本文件)
按照角色分类:
1.节点流:直接操作文件的流
2.处理流:将传输进行操作处理,可作用于处理流和节点流上
2.IO的体系
抽象基类 :
InputStream OutputStream Reader Writer
- java.io.File类:文件和目录路径名的抽象表示形式,与平台无关
- File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
- File对象可以作为参数传递给流的构造函数
File类构造方法
1.public File(String pathname)
以pathname为路径创建File对象
2.public File(String parent,String child)
以parent为父路径,child为子路径创建File对象
3.注意:File的静态属性String separator存储了当前系统的路径分隔符。
在UNIX中,此字段为‘/’,在Windows中,为‘\\’
File类常见的方法
IO流传输文件的demo
package org.jcq.main;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Test {/** * 使用IO流的节点流和处理流进行复制 1.创建File类实例,src是源文件路径,dest是目标传输文件路径(这个文件是没有的) * 2.将File实例做为FileInputStream或者FileOutputStream处理流的形参,因为效率问题,非文本文件使用FileInputStream和FileOutputStream * 3.创建缓冲流BufferInputStream 4.进行方法调用,并操作 5.清空缓冲留flush 6.关闭IO流 */public void testCopy(String src, String dest) {// 创建File实例File fs = new File(src);File fd = new File(dest);// 创建节点流FileInputStream fis= null;FileOutputStream fos = null;// 创建处理流BufferedInputStream bis = null;BufferedOutputStream bos = null;try {fis = new FileInputStream(fs);fos = new FileOutputStream(fd);bis = new BufferedInputStream(fis);bos = new BufferedOutputStream(fos);//调用方法,设置字节数组,设置字节数组每次装多少个字节(通过返回值查看是否全部读取完)byte [] b=new byte[20];int len;while((len=bis.read(b))!=-1) {//不等于-1则说明未读取完bos.write(b, 0, len);//b写入字节,0从头开始写入,len每次循环写入多少字节}bos.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {//为了防止空指针问题,先进行判空if(bis!=null) {bis.close();}if(bos!=null) {bos.close();}} catch (IOException e) {e.printStackTrace();}}}}
四、套路说明
步骤:
1、创建File的对象,指明路径,
2、创建FileInputStream对象,即节点流
4、创建BufferInputStream对象,构造器参数为FileInputStream对象,即处理流
3、调用BufferInputStream、BufferOutputStream对象的方法
/*read() :读取一个字节,当执行到文件结尾返回-1
*read(byte [ ]):读取一段字节,然后返回该段byte的字节长度,若未读取到字节,即到文档末尾,则返回-1
如:一个字符串abcdef,byte[4]
第一次byte={a,b,c,d},第二次byte={e,f,c,d},第二次读取将第一次读取的byte[0]/byte[1]替换e/f
*/
4、关闭相应的流(无论报错与否,都要保证关闭)
- IO流简单学习知识点
- Java IO流知识点
- IO流知识点整理
- IO流知识点汇总
- IO流知识点
- IO流知识点总结
- IO流的知识点
- IO流知识点总结
- IO流知识点整理
- IO流知识点浅析
- 【Java学习】Java IO-流概念理解和知识点总结
- 对io流学习的简单总结
- IO流知识点总结01
- IO流知识点总结02
- Java IO流知识点总结
- IO流的一些知识点
- IO流的基本知识点
- IO流操作实现文件拷贝\简单加密及相关知识点
- axios的使用
- 《隐秩序:适应性造就复杂性》--摘录与评述
- qq列表拖拽效果 qq果冻效果 qq删除消息提醒 小红点 CAShapeLayer动画
- Leetcode416. Partition Equal Subset Sum
- [arc076f]Exhausted?
- IO流简单学习知识点
- PT项目-采购订单批量导入
- 初识负外边距在布局中的影响(1):基础理论
- Struts2框架学习---Three
- 有关 input默认宽度
- WebPack详细入门教程(六)之图片打包处理
- 封装类似jQuery的选择器
- [51nod1768]Rikka with Sequences
- VC获取默认浏览器