IO流总结
IO流的作用:用于设备和设备之间的数据传输。
IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
IO流的分类:
按照操作数据的类型分为两种: 字节流和字符流。
按照流的方向: 输入流和输出流。
按流的功能不同分为:节点流和处理流。
File类
File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。
1.字节流
字节流 : 读取的是文件的二进制数据,不会对二进制做处理。
字节流类以InputStream(字节输入流)和OutputStream(字节输出流)为顶层类。它们都是抽象类。
FileInputStream: 是InputStream的子类。
FileInputStream使用步骤:
1.找到目标文件
2.建立通道
3.[创建缓冲区]
4.读取数据
5.关闭资源
//1.找目标文件
File file = new File("文件路径");
//2.建立通道
FileInputStream fileInputStream = new FileInputStream(file);
//3.创建一个缓冲区
byte[] b = new byte[1024]; //理论上设置的缓冲区越大 读取的效率越高
//4.读取数据
int count = 0;
while((count = fileInputStream.read(b))!=-1){
//String里面做了解码功能
System.out.println(new String(b,0,count));
}
//5.关闭资源
fileInputStream.close();
FileOutputStream: 是OutputStream的子类。
FileOutputStream使用步骤:
1.找到目标文件
2.建立通道
3.[创建缓冲区]
4.写入数据
5.关闭资源
FileOutputStream使用的注意点:
1.使用FileOutputStream写数据的时候,如果目标文件不存在,那么就会自己创建一个目标文件对象。
2.使用FileOutputStream写数据的时候,如果目标文件存在,先将里面的数据清空,在写入数据。
3.使用FileOutputStream写数据的时候,如果目标文件存在,想将数据在原有的基础上追加,这个时候就应该使用FileOutputStream(File file, boolean append) 构造方法, append如果为true表示可以追加数据,反之不信。
4..使用FileOutputStream写数据的时候,用write(int a)方法写数据,虽然接收的是int ,但实际上只有一个字节的数据,操作的是低八位的二进制 ,其他的24位全部丢掉。
//1.找目标文件
File file = new File(文件路径);
//2.创建一个通道
FileOutputStream outputStream = new FileOutputStream(file,true);
//3.创键一个字节数组
String str = "hello word";
//将字符串变为字节数组
byte[] b = str.getBytes(); //4.写入数据
outputStream.write(b);
//5.关闭资源
outputStream.close();
2.字符流 :
字符流 :读的也是二进制文件,他会帮我们解码成我们看的懂的字符。
字符流 = 字节流 + 解码。
字符流分为:字符输入流和字符输出流。
使用字符输出流时记得关闭资源或刷新数据,否则写入的数据不存在。
//1.找目标文件
File file = new File(文件路径);
//2.建立通道
FileWriter fileWriter = new FileWriter(file,true); //在文件后面继续追加数据
//3.写入数据
fileWriter.write("好好学习java");
//刷新
fileWriter.flush();
//4.关闭数据
//fileWriter.close();
字节流与字符流的区别:
1.byte与char的区别,字节流使用的是 byte;
2.字节流时采用二进制的编码直接传输,用字符流则牵涉到本地系统的编码问题;
3.字节流按照8位传输,字符流按照16位传输,所以字符流可以读取中文。
3.对象输入输出流 : ObjectInputStream、ObjectOutoutStream
使用注意点 :
1.想要通过对象流读取或者写入对象到磁盘,需要使对象的所属类来实现Serializable接口 ,Serializable接口 没有方法只是作为哟个标记。
2.当我改变类中的属性值,任然可以读取数据 ,需要设置serialVersionUID 为一个常量 :private static final long serialVersionUID = 1L;
3.如果我不想将某个属性写入到磁盘 可以在用transient关键字来修饰。
IO流总结的更多相关文章
- Java基础之IO流
很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...
- Java中IO流,输入输出流概述与总结
总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- java IO流详解
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- IO流
流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...
- Java IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- 揭开Java IO流中的flush()的神秘面纱
大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...
- java IO流 之 其他流
一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一). public class ByteArrayInputStream extends ...
- java IO流 之 字符流
字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...
随机推荐
- P/Invoke:C#调用C++
P/Invoke的全称是Platform Invoke (平台调用) 它实际上是一种函数调用机制通 过P/Invoke我们就可以调用非托管DLL中的函数. P/Invoke依次执行以下操作: 1. 查 ...
- 抛弃jQuery:Why?
原文链接:http://blog.garstasio.com/you-dont-need-jquery/ 我的Blog:http://cabbit.me/you-dont-need-jquery/wh ...
- ASP.NET MVC 描述类型(二)
ASP.NET MVC 描述类型(二) 前言 上个篇幅中说到ControllerDescriptor类型的由来过程,对于ControllerDescriptor类型来言ActionDescriptor ...
- Rxjava Subjects
上次提到调用observable的publish和connect方法后可以将一个Observable发出的对象实时传递到订阅在上的subscriber. 这个和Rxjava中Subject的概念十分相 ...
- atitit 商业项目常用模块技术知识点 v3 qc29
atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...
- 深入浅出Java三大框架SSH与MVC的设计模式
现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate.似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和 ...
- php排序算法
<?php//冒泡排序(数组排序) function bubble_sort($array){ $count = count($array); if ($count <= 0) retur ...
- 【CSS3动画】transform对文字及图片的旋转、缩放、倾斜和移动
前言:之前我有写过CSS3的transform这一这特性,对于它的用法,还不是很透彻,今天补充补充,呵呵 你懂的,小司机准备开车了. a)再提一提transform的四个属性 ①旋转--->ro ...
- 缩放因子和UI设计
一.PPI 1.像素密度PPI:PPI(Pixel Per Inch by diagonal):表示沿着对角线,每英寸所拥有的像素(Pixel)数目. 根据勾股定理(直角三角形两边为a和b,斜边为c, ...
- ng-directive-选择数据
本文是用angularjs指令写的一个简易数据选择功能,其实就是两个下拉框,把两边的数据相互交换而已,这样的功能最早应该是用jquery写过,但移动端js框架angularjs如果还嵌套jquery来 ...