java基础之IO File类和序列化Object
File类
用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作
流只能操作数据,不能操作目录
静态属性File.separator 名称分隔符
文件创建步骤
1 封装成文件 new File()
2 创建 file.createNewFile();
File类常见方法:
文件创建
boolean createNewFile() 在指定位置创建文件,如果文件存在,则不创建,返回false
输出流创建文件,如果文件存在,会覆盖原有文件
boolean mkdir() 创建一级目录
boolean mkdirs() 创建多级目录
对一个文件是否是文件或者目录时,要先判断该文件对象封装的内容是否存在
删除
boolean delete() 删除失败返回false
void deleteOnExit();
判断
boolean exists() 文件是否存在
isFile()
isDirictory()
调用文件的list()方法时 File对象必须是封装了一个目录,该目录还必须存在。
如果是具体的文件调用list()方法会抛空指针异常。
File f = new File(“c:\\abc”);
String[] names = f.list();
循环打印目录使用递归
递归要注意
1. 限定条件
2. 要注意递归的次数,尽量避免内存溢出
删除文件
带内容的目录,从里往外删除
递归调用先删除文件,在删除文件夹
*java 删除文件不到回收站
Properties是hashtable的子类,具备map集合的特点,存储的键值对都是字符串,是集合中和IO技术结合的集合容器。
特点:可以用于键值对形式的配置文件
获取键 getPropertyNames()
获取值 getProperty(String key);
设置值 setProperty(String key , String value);
获取所以属性
JDK1.5 propertyNames()
JDK1.6 stringPropertyNames()
Properties 可以加载流中的文件 TXT
从流中读取文件内容
1. 字节流
2. 字符流
FileReader fs = new FileReader(“1.txt”);
Properties pp = new Properties();
pp.load(fs);
修改硬盘中的文件
setProperty(String key , String value);
保存
store
(
OutputStream
out,
String
comments)
store
(
writer
out,
String
comments)
comments
注释文字
Print
类
PrintStream
类
构造方法参数类型
1.file
对象 File 2.字符串路径 String 3.字节输出流
PrintWriter
类
构造方法参数类型
1.
file
对象 File 2.字符串路径 String 3.字节输出流 outputstream 4.字符输出流 writer
序列流
SequenceInputStream类
对多个流进行合并
文件的切割,合并
Object 流
ObjectInputStream 与ObjectOutputStream
关键 Serializable 接口 由JDK控制序列化
class T implements Serializable
{
int i=10;
int j=9;
double d=23;
int k = 15;
}
FileOutputStream fos = new FileOutputStream(“d:/java/io/testObject.dat”);
ObjectOutputSteam oos = new ObjectOutputStream(fos);
T t = new T();
t.k=8;
oos.writeObject(t); //向文件中写入对象
FileInputStream fis = FileInputStream(“d:/java/io/testObject.dat”);
ObjectInputStream ois = new ObjectInputStream(fis);
T tRead = (T)ois.readObject(); //读取对象
System.out.println(tRead);
关键字 transient 修饰的成员变量,在序列化时不与考虑,即不被写入硬盘中
关键字 externalizable接口 给用户自己提供序列号接口