Java高级---IO框架

Java高级—I/O框架

一、流的概念

1.概念:内存和硬盘/存储设备的通道

输入:存储-》内存 input

输出:内存-》存储 output

字节流:读写所有数据(所有数据都是字节存储)

字符流:只能读写文本

字节流的父类(abstract):inputstream和outputstream

二、字节流

Fileinputstream类(普通)/Fileoutputstream类

1.read() 每次读一个字节,读到末尾为-1

while(fis.read()!=-1){
    syso(fis.read())
}

read(new byte[3]) 返回值为size

byte[] buf=new byte[3]
while(fis.read(buf)!=-1){
   syso(new String(byf,0,count))
}

2.write()

String s="helloworld"

fos.write(s.getBytes())

在new的时候可以append避免覆盖而是追加

3.字节流复制文件

Fileinputstream f1=new Fileinputstream("c:\\001.txt")
Fileoutputstream f1=new Fileoutputstream("c:\\002.txt")
byte[] buf=new byte[1024]
int count=0
while((count=fis.read(buf))!=-1){
        fos.write(buf,0,count)
}
fis.close()
fos.close()

Bufferedinputstream类(高效)字节缓冲输入流/Bufferedoutputstream类(高效)字节缓冲输出流

Bufferdinputstream bis=new Bufferdinputstream(new Fileinputstream("c:\\001.txt"))
Bufferdoutputstream bos=new Bufferdoutputstream(new Fileoutputstream("c:\\002.txt"))
while((count=bis.read())!=-1){
   bos.write(count)
}
bis.close()
bos.clos()

默认缓冲区大小8192(8kb)

拷贝纯文本用字符流,其他用字节流

对象流Objectoutputstream和Objecinputstream

1.增强了缓冲区和读写对象的功能

2.实现序列化Objectoutputstream,对象必须实现 serializable接口才能output进去,其中的对象类也要实现serializable接口

3.常用方法

readObject()

writeObject()

4.序列化版本号ID常量加上后保证序列化和反序列化是同一个类

5.使用transient修饰后就不能序列化了

6.静态属性无法序列化(无法保存到硬盘)

7.序列化多个对象可以放在集合中,读取时进行类型强制转换

## 三、字符流

### Filereader类(普通)/Filewriter类

1.以char形式读取和写

2.字符编码:utf-8默认

3.一个字节有八位

ASCII码:一个英文字符是一个字节,一个中文字符是两个字节

utf-8:一个英文字符是一个字节,一个中文字符是三个字节

Unicode:中英文都是两个字节

4.字符流实现文件复制

Filereader fr=new Filereader("c:\\001.txt");
Filewriter fw=new Filewriter("c:\\002.txt");
int data=0
while((data=fr.read())!=-1){
   fw.write(data)
   fw.flush
}
fr.close()
fw.close()

Bufferedreader类/Bufferedwriter类

1.高效读写,支持输入换行符,可一次写一行,一次读一行

2.read()

char[] buf=new char[1024]
int count=0
while((count=br.read(buf))!=-1){
  syso(new String(buf,0,count))
}

3.readline()

String line=null
while((line=br.readline())!=null){
   syso(line)
}

4.printline

和硬盘数据一样,不会是97-》a

三、转换流

Inputstreamreader/Outputstreamreader

input~:字节流到字符流

output~:字符流到字节流

四、File类

1.代表文件或者文件夹

2.常用方法

(1)#路径分隔符;

#名称分隔符\

(2)文件操作

file.createNewfile() 创建文件

file.exists() 判断文件是否存在

file.delete() 删除文件

file.getAbsolutepath() 获取绝对路径

file.getPath() 获取相对路径

file.getname() 获取名称

file.getparent() 获取父母

file.lastmodified() 获取创建时间

file.canwrite() 获取是否可写

file.isfile() 是否文件

file.ishidden() 是否隐藏

(3)文件夹操作

dir.mkdirs() 创建文件夹

dir.delete() 删除文件夹

dir.isdirectory() 是否文件夹

dir.list() 获取所有文件夹的内容

(4)Filefilter接口

File[] files=dir.listFiles(new FileFilter(){
   public boolean accept(Fine pathname){
   if(pathname.getName().endswith(".jpg")){
   return true;
   }
   return false;
   }
})

五、Properties

1.继承hashtable

2.没有泛型和流有关,都是字符串类型

3.方法

setproperty()

keyset()

entryset()

stringPropertynames() 得到所有属性名的set集合

3.和流有关的方法

PrintWriter pw=new PrintWriter("d:\cc.txt")
properties.list(pw)
pw.close()
Fileoutputstream fos=new Fileoutputstream("d:\store.properties")
properties.store(fos,"hhhh")
fos.close()
Fileinputstream fis=new Fileinputstream("d:\store.properties")
properties.load(fis)
fis.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值