IO流父类
输入流InputStream : 硬盘–>内存
输出流OutputStream : 内存–>硬盘

文件流(FileInputStream 和FileOutputStream)

/*********************************FileInputStream  ********************************************/
1.单个字节读取//创建文件输入流,并指定文件路径FileInputStream fis =new FileInputStream("D:\\aaa.txt");//读取文件read(),一个字节一个字节读,返回int 字节值,读完返回-1int data = 0;//接字节值的变量while ((data = fis.read())!=-1){//强转为字符型char data1 = (char) data;System.out.println(data1);}//关闭流fis.close();2.字节数组读取//创建文件输入流,并指定文件路径FileInputStream fis = new FileInputStream("D:\\aaa.txt");//读取文件read(),一个字节数组一个字节数组的读,返回int 字节值,读完返回-1byte[] bytes = new byte[1024];//创建读取的字符数组的缓冲区int count = 0;while ((count = fis.read(bytes)) != -1){System.out.println(new String(bytes,0,count));}//关闭流fis.close();
/******************************FileOutputStream***********************************************/
1.单个字节写入       //创建文件输入流,并指定文件路径FileOutputStream fos = new FileOutputStream("D:\\bbb.txt");//写入文件(单字节写入)fos.write(97);//这个其实也是afos.write('b');fos.write('c');//关闭流fos.close();2.字节数组写入//创建输出流,并指定文件路径,如果文件存在,文件覆盖
//        FileOutputStream fos = new FileOutputStream("D:\\bbb.txt");//创建输出流,并指定文件路径,如果文件存在,文件追加FileOutputStream fos = new FileOutputStream("D:\\bbb.txt",true);String s = "abcdefg";//获取字符串的字节数组byte[] bytes = s.getBytes(StandardCharsets.UTF_8);//写入文件(字节数组)fos.write(bytes);fos.close();/***********************************文件复制案例********************************************/public static void main(String[] args) throws Exception {//创建输入流(目标文件)FileInputStream fis = new FileInputStream("D:\\desktopIPic\\1.jpeg");//创建输出流(复制出来的文件)FileOutputStream fos = new FileOutputStream("D:\\desktopIPic\\fos.jpeg");byte[] buf = new byte[1024];//创建缓冲区 1kint count = 0;//保存实际读取的字节个数//文件复制(边读编写)while ((count = fis.read(buf))!=-1){//写入文件,防止最后一次读取不是1024bfos.write(buf,0,count);}//关闭流fos.close();}

缓冲流(BufferedInputStream和BufferedOutputStream)

/*********************************BufferedInputStream**************************************/FileInputStream fis = new FileInputStream("D:\\aaa.txt");//创建缓存流BufferedInputStream bis = new BufferedInputStream(fis);//读取int data = 0;while ((data = bis.read())!= -1){char data1 = (char) data;System.out.print(data1);}//关闭缓存流(内部自动实现关闭文件流)bis.close();
/*********************************BufferedOutputStream**************************************///文件流FileOutputStream fos = new FileOutputStream("D:\\bbb.txt");//创建缓存流BufferedOutputStream bos = new BufferedOutputStream(fos);//写入for (int i = 0; i < 10; i++) {//写入"a0"的字节数组 到8k缓冲区bos.write("a0".getBytes(StandardCharsets.UTF_8));//文件刷新到硬盘bos.flush();}//关闭缓存流(内部自动实现关闭文件流)bos.close();

对象流(ObjectInputStream和ObjectOutputStream)

/************************ObjectInputStream 序列化(内存到硬盘)*******************************/FileOutputStream fos = new FileOutputStream("d:\\aaa.bin");//创建对象流ObjectOutputStream oos = new ObjectOutputStream(fos);//这个类需要实现 序列化接口Student student1 = new Student("张三",18);//实现序列化(写入)oos.writeObject(student1);//关闭流(包括了flush()方法)oos.close();
/********************ObjectOutputStream 反序列化(硬盘到内存)******************************/FileInputStream fis = new FileInputStream("d:\\aaa.bin");//创建对象流ObjectInputStream ois = new ObjectInputStream(fis);//实现反序列化(读取)Student stu = (Student) ois.readObject();//关闭流(包括了flush()方法)ois.close();System.out.println(stu);/*************利用集合 序列化 反序列化 多个对象******************************//********序列化************/FileOutputStream fos = new FileOutputStream("d:\\aaa.bin");//创建对象流ObjectOutputStream oos = new ObjectOutputStream(fos);List<Student> list = new ArrayList<>();//这个类需要实现 序列化接口Student student1 = new Student("张三",18);Student student2 = new Student("李四",18);list.add(student1);list.add(student2);//实现序列化(写入)oos.writeObject(list);//关闭流(包括了flush()方法)oos.close();/********反序列化************/FileInputStream fis = new FileInputStream("d:\\aaa.bin");//创建对象流ObjectInputStream ois = new ObjectInputStream(fis);//实现反序列化(读取)List<Student> studentList = (List<Student>) ois.readObject();//关闭流(包括了flush()方法)ois.close();System.out.println(studentList);

字符流(FileReader 和FileWriter )

字符流 父类 Reader Writer

/*********************读取文件***************************///UTF8编码 一个汉字占3个字节,如果用字节流读取会出现乱码,因为字节流是一个字节一个字节的读取FileReader fr = new FileReader("d:\\aaa.txt");//单个读取 一个字符int data = 0;while ((data = fr.read())!= -1){System.out.print((char) data);}fr.close();//UTF8编码 一个汉字占3个字节,如果用字节流读取会出现乱码,因为字节流是一个字节一个字节的读取FileReader fr = new FileReader("d:\\aaa.txt");//单个读取 一个字符char [] buf = new char[1024];//实际读取的字符个数int count = 0;while ((count = fr.read(buf))!= -1){System.out.print(new String(buf,0,count));}fr.close();
/*********************写入文件***************************///UTF8编码 一个汉字占3个字节,如果用字节流读取会出现乱码,因为字节流是一个字节一个字节的读取FileWriter fw = new FileWriter("d:\\www.txt");//写入for (int i = 0; i < 3; i++) {fw.write("字符流写入");}fw.close();
/*****************复制文本文件*,不能复制图片和二进制文件(声音视频等)***********************/FileReader fr = new FileReader("d:\\www.txt");FileWriter fw = new FileWriter("d:\\fw.txt");//边读边写复制int data = 0;while ((data = fr.read())!=-1){fw.write(data);}//关闭fw.close();

字符缓存流(BufferedReader 和FileWriter )

     /***************BufferedReader *********************/FileReader fr = new FileReader("d:\\www.txt");BufferedReader br = new BufferedReader(fr);//读取一行String line = null;while ((line = br.readLine())!=null){System.out.println(line);}/***************BufferedReader *********************/FileWriter fw = new FileWriter("d:\\fw.txt");BufferedWriter bw = new BufferedWriter(fw);//写入for (int i = 0; i < 3; i++) {bw.write("字符缓冲流");//写入一个换行符bw.newLine();bw.flush();}bw.close();

打印流(PipedWriter)

            PrintWriter pw = new PrintWriter("d:\\pw.txt");pw.println("打印流");pw.close();

转换流(InputStreamReader和OutputStreamWriter)

        /***************InputStreamReader*********************///字节流FileInputStream fis = new FileInputStream("d:\\aaa.txt");//字节流转换子字符流InputStreamReader isr = new InputStreamReader(fis,"utf-8");//读取int data = 0;while ((data = isr.read())!=-1){System.out.println((char)data);}/***************OutputStreamWriter*********************/FileOutputStream fos = new FileOutputStream("d:\\aaa.txt");OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");//写入osw.write("转换流写入");osw.close();

IO流(文件流 , 缓冲流 , 对象流, 字符流 )相关推荐

  1. java读取二进制流文件_java分别通过字节流、字符流、二进制读取文件的代码

    将做工程过程中比较好的一些内容段做个备份,下面的资料是关于 java分别通过字节流.字符流.二进制读取文件的内容,应该是对小伙伴们有些用途. public class Start { public s ...

  2. Java18-day09【字节缓冲流、字符流、编码表、字符串与字符流中的编码解码问题、字符流读写数据的方式、字符缓冲流、IO流小结】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  3. IO流 输入流、输出流、字节流、字符流、转换流、及Properties类

    IO流 1.IO概述 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白编了.当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里.那么数据都是在哪些设备 ...

  4. JAVA File类、IO流体验与简介(字节流、字符流、序列流、打印流、编码、递归)

    1. File类 1.1. File类说明 存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永 久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中.这些文件可以移动 ...

  5. Java的IO操作(五) - PrintStream类、字符流、Reader和Writer、带缓冲的字符流BufferedReader和BufferedWriter...

    1. PrintStream类 我们都知道,int类型在Java中占4个字节,如1在内存中表示为 00000000 00000000 00000000 00000001.如果我们直接使用OutputS ...

  6. java 缓冲流 刷新_java – 缓冲和刷新Apache Beam流数据

    这是每个密钥和窗口 state和 timers的新功能的典型用例. 状态在a Beam blog post中描述,而对于计时器,您将不得不依赖于Javadoc.没关系javadoc所说的支持他们的跑步 ...

  7. 学Java基础19 字符流 编码表 转换流 字符高效流 对象流 序列化 以及所有的IO流总结

    一.字符流概述 1.字符流 就是用于来读写字符操作的流 2.字符流使用的原因: 使用字节流来读取文件中中文会出现乱码 因为中文不是一个字节组成的 所以读取中文的时候 需要使用字符流 字符实际上也是使用 ...

  8. io包下 文件类 字节流 字符流 缓冲流 转换流 序列化流 打印流

    第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.2 构造方法 public File(String pat ...

  9. 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...

    因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...

  10. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

最新文章

  1. 微型计算机接口与技术期末,微机原理与接口技术期末考试试题及答案.pdf
  2. 超级终端软件哪个好_同城配送软件哪个好?如何选择配送软件?
  3. spring mvc 总体概况
  4. [elixir! #0016] 在 phoenix 项目里配置 elm
  5. leetcode944
  6. 系统学习机器学习之神经网络(三)--GA神经网络与小波神经网络WNN
  7. matlab的mkdir创建新的文件夹,并把图像保存在该文件夹内
  8. 第二章、Linux操作系统及常用命令
  9. Linux源码包和脚本安装包的安装方法
  10. linux/windows下代理软件对比分析
  11. 李春葆《数据结构》第五版
  12. nrf52840烧录提示错误原因和解决办法
  13. Terraform 学习总结(6)—— 基于阿里云平台上的 Terraform 实战
  14. 网页番茄钟(Pomodoro timer)
  15. 使用Intent协议在webview中跳转三方app
  16. 2、Ubuntu介绍加环境搭建详细教程
  17. (第二场网络赛J题)Leaking Roof(bfs)
  18. 扫地机器人可以扫纸片_扫地机器人扫的干净吗?
  19. DB2DIAG 命令学习
  20. 碎片化学习Java(十六)Java for得出年份生肖

热门文章

  1. android播放器删除视频教程,列表条目 的播放视频按钮、删除条目按钮的点击事件监听接口的实...
  2. 输出杨辉三角形的前n行
  3. 安卓webrtc在ubuntu 2004下编译使用
  4. 【Pytorch】torch.nn.Dropout()
  5. 马云的2008:白云观禁语3天,淘宝高管需会倒立
  6. 天线巴伦制作和原理_传输线巴伦的原理设计、制作及测试
  7. Google登录及获取Calendar信息
  8. centos7.6安装nginx教程
  9. 【链块观点01期】当区块链的风刮到教育行业,哪些变革是注定要发生的?
  10. “全国十大热门上班路”出炉,北京西二旗、后厂村路热度最高