java基础之IO File类和序列化Object

本文介绍了Java中File类的基本用法,包括文件与目录的创建、删除、判断等操作,以及如何使用Properties类处理配置文件。此外,还详细讲解了序列化与反序列化的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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(OutputStreamout,Stringcomments)

store(writerout,Stringcomments)

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接口 给用户自己提供序列号接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值