java中io流9类,java之IO流笔记

1.File 文件类

文件后缀(文件扩展名):

.txt文本格式

.exe可执行的应用程序

.pdf 文本

.java   .class

压缩文件:.jar  .zip  .rar

配置文件: .log  .xml  .properties

——————————————————————————————————-------------------------------

目录/文件夹(diretory):文件夹里面可以存储文件、文件夹

文件(file):带有文件扩展名

绝对路径:从根文件夹开始的路径(path),windows系统一般根文件夹为系统盘,例如C:/

Linux系统一般以root作为根文件夹root

相对路径:从当前文件夹开始的路径,在Java中,当前文件夹自己判断

1.1 对象实例化格式: File 对象名称=new File(路径名); //此处路径名为对象默认指定的初始路径

1.2 按对象指定路径创建文件: 对象名称.creatNewFile();

1.3 按对象指定路径创建目录(文件夹):

对象名称.mkdir();//只创建一层文件夹

对象名称.mkdirs();//可以创建多层文件夹

1.4 删除对象指定路径的文件/目录:

对象名称.delete();-----慎用,建议使用U盘练习

1.5 修改对象指定路径文件/目录名:

对象名称.renameTo(新的文件对象);

1.5 递归调用:方法调用自己本身

1.6 递归调用遍历所有文件

2.IO流(大部分在java.io.*)

按存储方式分为字节流(按字节的方式进行读写,容易出现乱码)和字符流(按字符的方式读写)

按读写过程分为输入流(读到项目中)和输出流(写到项目外)

其他的分类:按操作的内容:数据流、对象流、文件流

2.1字节流

抽象类InputStream 外部(如指定文件资源)-->内部(如Myeclipse自定义的数组)

read方法(Myeclipse去读取指定位置的资源)   输入流  向MyEclipse输入

抽象类OutputStream  内部(如Myeclipse自定义的字节流数组)--->外部(如指定文件资源)

write方法(Myeclipse将资源写入指定位置)   输出流  从MyEclipse输出

2.2字符流

抽象类Reader  输入流

抽象类Writer  输出流

2.3 IO流操作文件的流程

a.File类指定待操作的文件路径

b.FileInputStream/FileOutputStream 指定输入/输出流输入/输出的指定路径

c.流读/写操作  read()  write()

d.关闭流  close()

2.4 字节流与字符流的区别:

a.字节流没有缓冲区域,直接对文件进行操作(即使不关闭流也会输出内容)

1字节byte=8位bit  位是计算机最小的存储单元  1字符char=2字节byte

b.字符流首先将字节流转换成字符流存在缓冲区域,然后再通过缓冲区域对文件进行操作

(字符流必须关闭流或刷新缓存才会将缓存区的内容输出)

c.所有的文件在硬盘或者传输时都是以字节的方式进行的,而字符只在内存中形成(例如缓冲区域),

所以在开发时使用字节流会好一些

d.字节流可以适用于图片、音频等;字符流只能处理字符及字符串

e.若一个文件资源需要被频繁读取的话可以使用字符流,将资源存入缓冲区中,

因为读取内存的速度相对于读取硬盘的速度会更快

2.5 使用流复制文件:

2.5.1 不带缓存

int tmp=0;

while((tmp=is.read()!=-1){  //边读边写 is为输入流对象  os为输出流对象

os.write(tmp);

}

2.5.2 有缓存

byte[] b=new byte[len]; //len为缓冲存储字节数

int tmp;

while((tmp=is.read(b)!=-1){

os.write(b,0,tmp);//读多少个字节就写多少个字节

}

读到的内容:12345    78 字节数组b:12345   78345   os.write(b)写出来:12345 78345

os.write(b,0,tmp)写出来:12345  78

2.6字节与字符的转换流:(了解)

InputStreamReader   抽象类Reader的子类,将输入的字节流转换为字符流

OutputStreamReader  抽象类Writer的子类,将输出的字符流转换为字节流

2.7 打印流(输出流OutputStream的子类)(了解)

PrintStream

PrintWriter

2.8 System类常量(了解)

System.in  输入流InputStream     系统标准输入,一般对应键盘输入  Scanner scan=new Scanner(System.in)

System.out  打印流PrintStream    系统标准输出,一般对应显示器   打印出来给客户看

System.err  打印流PrintStream     错误信息输出  打印出来给程序员看

setIn()  setOut() setErr()

2.9 压缩流  java.util.*包下面 (了解)  压缩成.zip格式

ZipInputStream   将压缩文件解压输入应用程序中

ZipOutputStream  将文件压缩输出到应用程序外

ZipEntry  表示压缩包文件条目

ZipFile  从Zip文件读取条目

比较压缩效率(空间) 压缩时间(时间)

注意:每处理完一条条目时需要关闭当前条目,避免出现数据丢包的异常

java.util包下的压缩流限定使用UTF-8格式读写,若想更改编码读写格式,可以导入jar包:ant-1.6.5.jar

使用org,apache.tools.zip.*下的类进行压缩流操作

2.10 对象流  ObjectInputStream  ObjectOutputStream

a.对象流只能对支持 java.io.Serializable 或

java.io.Externalizable(作用类似于关键字transient,可过滤序列化的属性) 接口的对象进行操作。

b.序列化:就是将对象转为字节流的过程,可以永久的保存在文件中。

c.反序列化:将字节流数据还原成对象的过程

d.可序列化的对象必须实现接口Serializable

e.可使用关键字transient禁止某一个对象属性序列化

f.对象流写入对象时有一个默认的方法去写表头,表示写入的是对象的数据

writeStreamHeader();  写表头的方法 调用ObjectOutputStream构造方法时自动调用

一个存储对象字节流的文件只能有一个表头;

对多个对象进行序列化时需要重写writeStreamHeader()方法,

重写后的方法不需要执行任何操作(空实现)

注意:若反序列化的JDK版本与序列化版本不一致,可能会出现不兼容的问题,一般建议

在序列化时注明JDK版本号,即在实体类中增加常量serialVersionUID

2.11 MVC三层设计模式

com.pojo 实体层  存放对象模型(图纸)

com.biz  业务接口  一般定义增删改查的方法

com.dao  业务层  实现接口逻辑  实现增删改查

com.view 视图层  展示结果

2.12 BufferedReader 从缓冲区读取文本数据

BufferedWriter  将文本数据写入缓冲区

通常作为字符流的包装流使用,提高读写效率

2.13 字符编码: Charset

ISO8859-1  单字节编码  0-255个字符 适用于英文

GBK/GB2312  双字节编码 专门表示汉字  GBK简繁体通用  GB2312只适用于简体字

unicode  使用十六进制编码(双字节),java标准编码(JVM可以直接识别的编码),与 ISO8859-1不兼容

UTF  不定长编码,1-6个字节不等 兼容ISO8859-1  一般中文网页使用此编码

UTF-8可以适用于英文与中文,一般编码习惯使用UTF-8

一般类开放改变编码格式,方法一般命名为:setEncoder()  setCharset()

URLEncoder.encoder(String str,String charsetName)字符编码,将字符串按指定的字符集编码格式转为一系列的数字编码

URLDeCoder.decoder(String str,String charsetName)解码。将一系列的数字编码按指定的字符集编码格式转为字符串

获取本机编码的方法:System.getProperty("file.encoding")

字符串设定编码的方法:String.getBytes(String charsetName) //参数为设定的编码

更多干货资料欢迎加作者Q群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值