首页 / JAVA / java高级之文件IO流
java高级之文件IO流
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java高级之文件IO流,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5671字,纯文字阅读大概需要9分钟。
内容图文
![java高级之文件IO流](/upload/InfoBanner/zyjiaocheng/646/b387686efcdf4796bd6f3e80c50b966c.jpg)
1.文件IO
外存 内存 缓存
打开txt文件的步骤:
1.启动一个应用程序[记事本,word,excel],系统会给这个程序分配内存空间
2.在外存和内存之间建立一个管道
3.将外存中的数据通过管道输送到内存中
4.输送数据的管道叫做数据流对象
PS: 1.字节是可以操作的最小的有意义的单位
2.所有的数据都可以用字节表示
2.字节输入流
InputStream:所有字节输入流的抽象父类
FileInputStream 文件输入流
ByteArrayInputStream 字节数组输入流
ObjectInputStream ??对象输入流
FilterInputStream 过滤输入流
BufferedInputStream 缓冲字节输入流
DataInputStream 基本数据类型输入流
FileInputStream 文件字节输入流
构造方法
FileInputStream(File f,String name)
FileInputStream(String parent,String name)
FileInputStream(String name)
常用方法:
int len = available() ?获得流中的估计剩余字节数
int t = read(); 读取流中的字节,如果是-1,说明读取到文件末尾
返回值表示读取到的字节数,如果为-1,表示到流的末尾
skip(t); ?丢弃到t个字节
int t =read(byte[]) 将流中的数据读入到字节数组中,直到填满整个数组
int t = read(byte[],off,len) 将流中的数据读入到字节数组中,从数组的第off个位置开始填充,读取len个
返回值表示读取到的真实的字节数,如果为-1,表示到流的末尾
3.字节输出流
OutputStream
FileOutputStream 文件输出流
ByteArrayOutputStream 字节数组输出流
ObjectOutputStream 对象输出流
FilterOutputStream 过滤输出流
BufferedOutputStream 缓冲字节输出流
DataOutputStream ?基本数据类型输出流
FileOutputStream 文件字节输出流
构造方法
FileOutputStream(String path)
FileOutputStream(File f)
FileOutputStream(String path,boolean append)
FileOutputStream(File f,boolean append)
常用方法:
write(int) 将指定的字节写到输出流
write(byte[]) 将字节数组中的所有字节写到输出流
write(byte[],off,len) 将字节数组中的字节写到输出流,从下标off开始,写len个
flush() ?刷新输出流,将流中的字节强制输出
案例:
1.读取文本文件中的数据
2.将内存中的数据写到文件中
3.完成一个文件复制
作业:
1.查询API文档,找出字符串类中 关于字节数组,字符数组,字符串三者的相互转换的操作
2.定义一个方法完成文件的复制
public void copy(String src,String dest){}
3.给定一个文件,将文件中的所有字节+1,重新写到硬盘中,变成一个新的文件【简单的文件加密】
-----------------------------------------
4.字符集编码
ISO8859系列 : 西欧字符集 用来表示半角字符,不能处理中文
A B c d 2 3
ab C D2 3
GBK/GB2312/GB18030 : 简体中文
BIG5 : 繁体中文
UTF-8 : 基于Unicode编码的字符集
ANSI
------------------------------------------------------------
5.缓冲流的使用:
只能对基本的数据流进行包装
BufferedInputStream bis = new BufferedInputStream(inputstream);
BufferedOutputStream bos = new BufferedOutpuStream(outputstream);
基本数据类型的数据流(可以直接操作基本数据类型)
DataInputStream
DataOutputStream
案例:有一个学生对象,将学生对象的数据保存到文件中
------------
作业:
1.查API文档,学习使用Object流
使用对象流来对学生对象进行写和读操作
2.使用ArrayList保存若干个学生对象,将数据保存到文件中,并可以正确的读取出来
-----------------------------------------------------------
6.对象的序列化和反序列化
序列化:对象本身是不能够在流中串行的,将对象转换成可串行的,有序的数据流
反序列化:将串行的有序的流数据转换成对象的形式
7.如何实现序列化和反序列化?
如果某一个类的对象需要序列化或反序列化,就需要让该类实现序列化Serializable接口
序列化接口不做任何操作,仅仅是给该类的对象添加一个可序列化标记
8.文件协议
txt
doc
bmp
rar
---------------------------------------------------
9.其他流
字节数组输入流
ByteArrayInputStream
字节数组输出流
ByteArrayOutputStream
=============================================================
字符输入流
Reader
?InputStreamReader 字节输入流到字符输入流的转换流
? FileReader 文件字符流
?BufferedReader ? 缓冲字符流
字符输出流
Writer
??OutputStreamWriter
FileWriter
??BufferedWriter
----------------------------------------------------------
1.使用字符流完成文本文件的复制
2.如果不是文本文件,能否用字符流来复制???
3.完成文件夹的复制[字节流]
4.解压jdk中的src.zip [用字符流]
统计src中有多少个java文件
统计一共有多少行Java代码
统计src文件夹的总大小
5.[扩展]解析BMP格式的图片
==============================================
10.NIO
FileChannel
ByteBuffer
//创建文件字节流
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest, true);
//获得输入和输出管道
FileChannel inChannel = fis.getChannel();
FileChannel outChannel = fos.getChannel();
outChannel.transferFrom(inChannel, 0, f.length());
inChannel.transferTo(0, f.length(), outChannel);
ByteBuffer buffer = ByteBuffer.wrap("中南大".getBytes());
outChannel.write(buffer);
=================================
11.文件路径
绝对路径:从根磁盘开始计算的路径
windows: ?D:\\aa\\bb\\cc\\dd.txt
Linux: ???/aa/bb/cc/dd.txt
http://www.qq.com/aa/bb/cc.css
相对路径:
?A: ??D:\\aa\\a.txt
B: ??D:\\aa\\bb\\cc\\c.txt
A相对于B的路径: ?..\\..\\a.txt
B相对于A的路径: ?bb\\cc\\c.txt
--------------------------------------------------------
扩展:
1.字节流和字符流的区别,以及各自的使用场景
2.InputStream中 read()方法的返回值表示什么意思?
read(byte[] s)方法的参数表示什么意思?返回值表示什么意思?
read(byte[] s,int t,ine len) 三个参数的意思?返回值是什么意思?
3.outputStream中 write(int t)方法的参数表示什么意思? write(byte[] s)方法的参数表示什么意思? write(byte[] s,int t,ine len) 三个 参数的意思?
4.写出常用的字节流和字符流有哪些?各自的继承体系?
5.使用文件管道FileChannel的好处有哪些?
6.使用FileInputStream/FileOutPUtStream实现文件复制
使用FileInputStream/FileOutPUtStream+自定义缓冲区实现文件复制
使用缓冲字节流实现文件复制
使用缓冲字节流+自定义缓冲区实现文件复制
7.使用字符流用第6题的方式复制文件
8.文件夹的复制一定要会写
9.统计文件夹中的各种数据
文件个数,文件夹个数 文件大小 总行数 标志性的数据[XXX的行数,jpg文件个数]
正在路上的小白 发布了31 篇原创文章 · 获赞 16 · 访问量 1739 私信 关注内容总结
以上是互联网集市为您收集整理的java高级之文件IO流全部内容,希望文章能够帮你解决java高级之文件IO流所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。