什么是io

生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了 trl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢 ?键盘、内存、硬盘、外接设备等等。
我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出output,即流向内存是输入流,流出内存的输出流。
Java中I/O操作主要是指使用 java,io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。

输入输出字节流

根据数据的流向分为:输入流和输出流

输出流 : 把数据从 内存 中写出到 其他设备 上的流
输入流 : 把数据从 其他设备 上读取到 内存 中的流

格局数据的类型分为:字节流和字符流
字节流 : 以字节为单位,读写数据的流。
字符流 : 以字符为单位,读写数据的流。

顶级父类

OutputStream类

java.io.OutputStream 抽象类是所有字节输出流的父类,用来写处字节数据流
      成员方法:
          - public void close():关闭此输出流并释放与此流相关联的任何系统资源
          close方法,当完成流的操作时,必须调用此方法,释放系统资源,否则数据写入不完整或消失
          - public abstract void write(int b):将指定的字节写入输出流
          - public void write(byte b[]):将 b.length字节从指定的字节数组写入到此输出流中
          - public void write(byte b[], int off,int len):将指定范围的字节数组的字节数据写到此输出流中

FileOutputStream类

概述:java.io.FileOutputStream,是OutputStream类的子类,表示字节输出流,用来写出字节数据
      构造方法:
              - public FileOutputStream(String name):创建文件输出流 以指定名称写入文件
              - public FileOutputStream(File file):创建文件输出流,以指定的File对象表示的文件进行写入

输出流

    public static void main(String[] args) throws IOException {File f1=new File("d:/来自一个爱你的表白.txt");f1.createNewFile();OutputStream out=new FileOutputStream(f1);Scanner sc=new Scanner(System.in);System.out.println("请输入:");String msg=sc.next();byte[] bytes = msg.getBytes();//获字串对应解析后的 byte 数组out.write(bytes);//定义一个String,把字符串的内容写入到电脑的磁盘中String mgs="爱你在每一个你不知道的瞬间!";byte[] byt = mgs.getBytes(); //获取字符串 解析后的 byte数组out.write(byt); //把yte数组写入文件,相当于把字符串写入文件中}

输入流

    public static void main(String[] args) throws IOException {//输出流:,内存的内容输出到文件(与操作)入流:文件内容输入到内存中(读操作)File f1=new File("d:/a.txt");//创建一个输入流,读取f1这个文件InputStream input=new FileInputStream(f1);//读取文件的一个字符,然后把字符转换为对应的数字返回。如果读取到文件的末尾,返回的是-1int n;while((n=input.read())!=-1){System.out.println((char)n);}}

综合案例:文件的复制

package FilePack;import java.io.*;public class FileCopy {public static void main(String[] args) throws IOException {File f1=new File("D:/a.jpg");File newFile=new File("D:/aa/copy.jpg");//2.创建目的文件newFile.createNewFile();//3.定义输入输出流:使用输入流读取内容使用输出流写入内容InputStream in=new FileInputStream(f1);OutputStream out=new FileOutputStream(newFile);/*//4.循环读取文件内容,同时写入指定的文件中int n;while ((n=in.read())!=-1) {out.write(n);}//实际工作中推荐写法byte[] buffer=new byte[10];int n=0;while( (n=in.read(buffer)) != -1){out.write(buffer,0,n); //buffer数组从0开始,截取读取到有效字节数n 写入到目的文件中}*///联系时容易理解的方式byte[] buffer=new byte[10];int n=0;while(true) {n = in.read(buffer); //读取文件,内容放Abuffer数组中,返回的是实际读取的字节数if(n!=-1) {out.write(buffer,0,n); //buffer数组从0开始,裁取读取到有效字节数n 写入到目的文件中}else {break;}}}
}

Flie输入输出字节流相关推荐

  1. java IO(输入输出) 字节流

    //输入流 package zhi_jie_liu;import java.io.*;public class Example01 {public static void main(String[] ...

  2. 字节与字符,字节流与字符流

    字节(byte) 一个字节是8位(bit),一个位代表0/1.即二进制 1KB=1024byte 1MB=1024*1024byte ASCII码  字母占1字节,汉字占2字节,一个二进制数字是0-2 ...

  3. Java ---- 序列化

    Java对象的序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现实应用中, ...

  4. [嵌入式][分享][交流]发布一个消息地图的模块

    所谓消息地图就是根据不同的状态来执行对应的处理程序,这一技术成为消息地图.例如我们平时使用的if.else语句switch.case 语句都是消息地图的一种实现方式,而这个模块采用的是函数指针的方式来 ...

  5. javaI/O流小结

    [README] 1.本文总结java IO读取或写入数据的方式和相关类说明: 2.java IO建立在流之上的.输入流读取数据,输出流写入数据: 3.过滤器流-filter stream,可以串连( ...

  6. java实验1机动车实验目的_《Java程序设计》实验指导书.doc

    <Java程序设计>实验指导书 实验一.熟悉JDK环境及主要命令 一.实验目的 1) 熟悉JDK的环境配置 2) 掌握JDK的命令 3) 掌握Java Application程序的开发过程 ...

  7. 当年我们一起追过的Java,Java SE 个人笔记

    目录 JDK的安装和配置运行Java程序 java基本语法 面向对象 异常 多线程l API(Application Programming Interface)各种功能的类说明 集合类 IO输入输出 ...

  8. JAVA入门万字总结

    由于图片上传问题,我将文件转化为PDF,这样既可以查看文章图片,也可以下载保存 https://download.csdn.net/download/peterbearXY/15289857 文章目录 ...

  9. 如何学IO流IO流的含义

    初学者觉得复杂是很正常的,归根结底是因为没有理解JavaIO框架的设计思想:可以沿着这条路想一想: 1,学IO流之前,我们写的程序,都是在内存里自己跟自己玩.比如,你声明个变量,创建个数组,创建个集合 ...

最新文章

  1. c语言lang变量,02-GoLang定义变量
  2. 8个必备的PHP功能开发
  3. ios推送服务,php服务端
  4. 运行时异常与一般异常的区别
  5. js面向对象的五种写法
  6. C++之operator关键字(重载操作符) 使用总结
  7. C++游戏入门书籍推荐
  8. 【Anaconda】Anaconda 环境操作(新建/激活/退出/删除/克隆/重命名)
  9. TF2.0—tf.keras.layers.Lambda
  10. C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .
  11. 基于OpenCV实现二值图细化,骨骼化并求出端点和交叉点
  12. python列表的负数索引
  13. 收不到oracle注册邮件或无法登录
  14. 杜绝焦虑,如何提高执行力改变生活?
  15. 摄魄人心的独白,静静聆听,你会感悟很多
  16. Glib之GObject简介(翻译)
  17. AJAX技术入门基础
  18. vue全家桶和react全家桶
  19. 但为君故——浅谈非科班大一在校大学生选择编程的心路历程。
  20. vtk实战(十四)——解析vtk XML 文件的内容

热门文章

  1. django-happy-shop一个可以快速集成到任何django项目的商城模块
  2. 用C语言编写程序计算cos x 的近似值,输入精度 e 和 x,用下列公式求cos(x)的近似值...
  3. ui动效 unity_Unity中实现仿主机游戏的UI动画效果
  4. 6.5万游客昨日赴北京香山赏红叶-香山-红叶节-游客
  5. 游戏服务器框架之跨服(二)
  6. 弥补胸肌缺陷的训练策略
  7. linux 下的模拟器
  8. 单词接龙java实现
  9. 互联网公司发员工期权靠谱吗?
  10. 2019北理计科保研夏令营(优营)