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.什 ...
随机推荐
- 【腾讯Bugly干货分享】微信终端跨平台组件 Mars 系列 - 我们如约而至
导语 昨天上午,微信在广州举办了微信公开课Pro.于是,精神哥这两天的朋友圈被小龙的"八不做"刷屏了.小伙伴们可能不知道,下午,微信公开课专门开设了技术分论坛.在分论坛中,微信开源 ...
- 【深入浅出jQuery】源码浅析2--奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- Repository 仓储,你的归宿究竟在哪?(三)-SELECT 某某某。。。
写在前面 首先,本篇博文主要包含两个主题: 领域服务中使用仓储 SELECT 某某某(有点晕?请看下面.) 上一篇:Repository 仓储,你的归宿究竟在哪?(二)-这样的应用层代码,你能接受吗? ...
- 学会使用Spring注解
概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 ...
- static,你还敢用吗?
我用火狐的HttpRequester测试开发组里一个同学发布的Web API接口,遇到了一个奇怪的问题. 我测试边界情况时,第一次调用响应的结果是正常的,但当再次及以后的请求时,却返回了异常“Syst ...
- Redis数据结构详解之Set(三)
序言 在Redis中,Set和list都是字符串序列,非常相似,不同之处在于Set是用哈希表来保持字符串的唯一性,没有先后顺序,不像list一样,可以在首尾增删数据.但是set也有自己的相应处理命令来 ...
- 【原创】记一次Project插件开发
一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...
- EasyUI中那些不容易被发现的坑——EasyUI重复请求2次的问题
问题控件:datagrid.combobox.所有能设置url属性的控件 问题版本:1.4.4.1.4.5(之前的版本没测) 问题如图: 重复请求2次,错误代码如图: 错误问题分析:html加载的时候 ...
- spring boot(六):如何优雅的使用mybatis
*:first-child{margin-top: 0 !important}.markdown-body>*:last-child{margin-bottom: 0 !important}.m ...
- 利用C#开发移动跨平台Hybrid App(一):从Native端聊Hybrid的实现
0x00 前言 前一段时间分别读了两篇博客,分别是叶小钗兄的<浅谈Hybrid技术的设计与实现>以及徐磊哥的<从技术经理的角度算一算,如何可以多快好省的做个app>.受到了很多 ...