java.io.File类
1.凡是与输入和输出相关的类,接口,等定义在java。io包下
2.File是一个类,可以有构造器创建其对象,此对象对应着一个文件(.txt .avi .doc .ppt .mp3 .jpg)或文件目录
3.File类的对象是与平台无关的。
4.File中的方法,仅涉及如何做到创建,删除,重命名等等,只要涉及到文件内容,File是无能为力的,必须由io流出来完成
5.File类的对象通常作为io流具体类的构造方法的形参
访问文件名
getName()
getPath()
get1AbsoluteFile()
get1AbsolutePath()
getParent()
renameTo(File newName()
file。renameTo(file):file1重命名为file2.要求file2一定不存在
文件检测
exists()
canWrite()
canRead()
isFile()
isDriectory()
信息常规文件信息
lastModified()
length()
文件操作相关
createNewFile()
delete()
目录操作相关
mkDir() //创建一个文件目录,只有在上层文件目录存在的情况下,才能返回true
mkDirs()//创建一个文件目录,若上层文件目录不存在,一并创建。
list()
listFiles()
1.流的分类
按照数据流向的不同,输入流,输出流
按照处理数据的单位的不同,字节流,字符流(处理的文本文件)
按照角色不同的:字节流(直接作用于文件的)处理流
2.IO的体系
抽象类 节点流 缓存流
文件流 处理流的一种,可以提升文件的操作的效率
InputStream FileInputStream BufferedInputStream
OutputStream FileOutputStream BufferedOutputStream(flush()
Reader FileReader BufferedReader (readLine())
Writer FileWriter BufferedWriter (flush())
书写步骤
//使用try-catch的方式处理器异常比较合理!
//从硬盘存在的一个文件中,读取其内容到程序的过程,使用FileInputStream
//要读取的文件一定要存在否者抛FileNotFoundException
1.//创建一个File类的对象
2.创建一个FileInputStream类的对象
3.调用FileInputStream的方法,实现file文件的读取。
//read()读取文件的一个字节,当前执行到文件结尾时。返回-1
4.关闭相应的流
OutputStream
1.//创建一个File类的对象。表名要写入的文件位置
//输出的物理文件可以不存在,当执行过程中,若不存在,会自动创建的。
2.创建一个FileOutputStream类的对象将file的对象作为形参的传递给FileOutStream的构造器中
3.写入的操作
4.关闭相应的流
//使用FileReader,FileWrite 可以实现文本文件的复制
//对于非文本文件(视频文件,音频文件,图片)只能使用字节流!
不能实现非文本的复制
//BufferedInputStream和 BufferedOutputStream实现非文本文件的复制
1.提供一个读入文件
2.想创建相应的节点流文件, FileInputStream,, FileOutputStream
3.将创建的节点流的对象作为形参传递给缓冲流的构造器
4.具体的实现例
5.关闭相应的流
char[] c=new char[50];
int len;
while((len=fis.read())!=-1){
fw.writer(c,0,len)
fw.flush();
}
//String str=null;
while((str=fis.readLine())!= null){
fw.while(str+”\n”);
或
fw.newLine()
fw.flush();
}
****TXT为文本文件
打印流和数据流的使用
打印流
字节流 字符流
PrintStream PrintWriter
对象流的引用
《面试问》什么是对象序列化机制
答:允许把内存中的Java对象转换成与平台无关的二进制流,从而允许吧这中二进制流持久的的保存在
磁盘上,伙同网络讲这种二进制流传传输到另一个网络节点。
反序列化机制
答:当其他的程序获取了这种二进制流,就可以恢复成原来的Java对象
要实现序列化的类,
1.要去此类是可序列化,实现Serializable接口
2.要求类的属性同样的要实现Serializable接口
3.提供一个版本号:private static final long serializableUID=******;
4.使用static 或transient修饰的属性,不可以被实例化。
RandomAccessFile:支持随机访问
1.既可以充当一个输入流,有可以充当一个输出流
2.支持从文件的开头读取,写入
3.支持任意位置的读取 写入(插入)
构造器
public RandomAccessFile(File file ,String mode)
oublic RandomAccessFile(String name,String mode)
mode
r:以读取方式打开
rw:打开以遍读取与写入
rwd 打开以遍读取与写入。同步文件内容的更新
rws 打开以遍读取与写入。同步文件内容和元数据的更新