1Java文件系统管理
java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。
File类只用于表示文件(目录)的信息(名称、大小等),不能对文件内容进行访问。
2File代表文件系统中对文件/目录的管理操作(增删改查,CRUD)
常用API方法:
File(String)指定文件名的构造器
long length()
long lastModified()
String getName()
String getPath()
boolean exists()
boolean dir.isFile()
boolean mkdir()
boolean mkdirs()
boolean delete();
boolean createNewFile() throw IOException
FIle[] listFile()
3回调模式和FileFilter
FileFilter类是对操作文件的过滤,相当于命令:ls|grep patten
API方法:File[] listFile(FileFilter)
listFile()方法会将dir中每个文件交给accept()方法检测,如果返回true,就作为方法的返回结果元素
增强循环(foreach循环):JDK5提供的简化版for循环
回调模式:accept()方法的调用属于回调模式
4RandomAccessFile
RandomAccessFile类是Java提供的功能丰富的文件内容访问类,它提供了众多方法来访问文件内容,既可以读取文件内容,,也可以向文件输出数据,RandomAccessFile支持"随机访问"方式,可以访问文件的任意位置。
1)Java文件模型
在硬盘上文件时byte by byte存储的,是数据的集合
2)打开方式
有两种模式"rw"读写、"r"只读
RandomAccessFile raf = new RandomAccessFile(file,"rw")
打开文件时候默认文件指针在开头 pointer = 0
3)写入方法
raf.write(int)可以将整数的"低八位"写入到文件中,同时指针自动移动到下一个位置,准备再次写入
再次写入注意,文件名的扩展名要明确规定,没有默认扩展名现象
RandomAccessFile raf = new RandomAccessFIle("Hello.java","rw");
4)读取文件
int b = raf.read() 从文件中读取一个byte(8位)填充到int的低八位,高24位为0,返回值正数0~255,如果返回-1表示读取到了文件末尾!每次读取后自动移动文件指针,准备下一次读取。
5)文件读写完成以后一定要关闭文件
Sun官方说明,如果不关闭,可能遇到一些意想不到的错误,根据具体操作平台不同会有不同,在使用过程中,切记文件读写完成后要关闭文件。
5序列化与基本类型序列化
1)将类型转换为4个byte,或将其它数据类型(如long->8 byte)的过程,即将数据转换为n个byte序列叫序列化(数据->n byte)0x7fffffff->[7f ff ff ff ]
2)反序列化,将n byte转换为一个数据的过程(n byte->数据)
3)RandomAccessFile 提供基本类型的读写方法,可以将基本类型数据序列化到文件或将文件内容反序列化为数据