Flie输入输出字节流
什么是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输入输出字节流相关推荐
- java IO(输入输出) 字节流
//输入流 package zhi_jie_liu;import java.io.*;public class Example01 {public static void main(String[] ...
- 字节与字符,字节流与字符流
字节(byte) 一个字节是8位(bit),一个位代表0/1.即二进制 1KB=1024byte 1MB=1024*1024byte ASCII码 字母占1字节,汉字占2字节,一个二进制数字是0-2 ...
- Java ---- 序列化
Java对象的序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现实应用中, ...
- [嵌入式][分享][交流]发布一个消息地图的模块
所谓消息地图就是根据不同的状态来执行对应的处理程序,这一技术成为消息地图.例如我们平时使用的if.else语句switch.case 语句都是消息地图的一种实现方式,而这个模块采用的是函数指针的方式来 ...
- javaI/O流小结
[README] 1.本文总结java IO读取或写入数据的方式和相关类说明: 2.java IO建立在流之上的.输入流读取数据,输出流写入数据: 3.过滤器流-filter stream,可以串连( ...
- java实验1机动车实验目的_《Java程序设计》实验指导书.doc
<Java程序设计>实验指导书 实验一.熟悉JDK环境及主要命令 一.实验目的 1) 熟悉JDK的环境配置 2) 掌握JDK的命令 3) 掌握Java Application程序的开发过程 ...
- 当年我们一起追过的Java,Java SE 个人笔记
目录 JDK的安装和配置运行Java程序 java基本语法 面向对象 异常 多线程l API(Application Programming Interface)各种功能的类说明 集合类 IO输入输出 ...
- JAVA入门万字总结
由于图片上传问题,我将文件转化为PDF,这样既可以查看文章图片,也可以下载保存 https://download.csdn.net/download/peterbearXY/15289857 文章目录 ...
- 如何学IO流IO流的含义
初学者觉得复杂是很正常的,归根结底是因为没有理解JavaIO框架的设计思想:可以沿着这条路想一想: 1,学IO流之前,我们写的程序,都是在内存里自己跟自己玩.比如,你声明个变量,创建个数组,创建个集合 ...
最新文章
- c语言lang变量,02-GoLang定义变量
- 8个必备的PHP功能开发
- ios推送服务,php服务端
- 运行时异常与一般异常的区别
- js面向对象的五种写法
- C++之operator关键字(重载操作符) 使用总结
- C++游戏入门书籍推荐
- 【Anaconda】Anaconda 环境操作(新建/激活/退出/删除/克隆/重命名)
- TF2.0—tf.keras.layers.Lambda
- C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .
- 基于OpenCV实现二值图细化,骨骼化并求出端点和交叉点
- python列表的负数索引
- 收不到oracle注册邮件或无法登录
- 杜绝焦虑,如何提高执行力改变生活?
- 摄魄人心的独白,静静聆听,你会感悟很多
- Glib之GObject简介(翻译)
- AJAX技术入门基础
- vue全家桶和react全家桶
- 但为君故——浅谈非科班大一在校大学生选择编程的心路历程。
- vtk实战(十四)——解析vtk XML 文件的内容