一,File相关类
作用:通过File对象实现对文件/文件夹的操作
主要方法:①该路径是否存在:file.exists()
②是否是一个文件夹:file.isDirectory()
③是否是一个文件:file.isFile()
④是否隐藏:file.isHidden()
⑤文件大小:file.length()
6.mkdir()和mkdirs()创建新文件夹
递归删除文件
public static void delete1(File file) {
if(file.isDirectory()) {//是否为一个文件夹
File[] fi=file.listFiles();//获取当前文件夹下的所有子项
for (File file2 : fi) {
delete1(file2);
}
file.delete();
}else {
file.delete();
}
}
注意:mkdir()和mkdirs()的区别
mkdir():创建一个文件夹,当当前路径错误的时候就抛出错误
mkdirs():可以创建多个文件,当A下创建B再B下创建C时 //创建多层,但也可以创建单个文件夹
- 这个方法当路径错误的时候,他会按照错误路径,创建多个文件夹
低级流
Java采用的是:unicode(两个字节)
1.字节输入流InputStream
概念:从外存读取数据到内存中(进行读操作)
主要方法: read():从输入流中读取数据
- 读取文件时。当读到末尾的时候返回-1
byte[] bytes=new byte[3];//用来装输入流的数据
int out=in.read(bytes);//建流存放到byte数组中
for (byte b : bytes) {
System.out.println(b);
}
2.字节输出流OutputStream
概念:把数据流写入到文件中
OutputStream out=new FileOutputStream(file,true);//true时为文件追加
主要方法:
write():用来写数据到文件中,数据类型可以有byte和int
3.字符输入流/字符输出流
和字节流的区别:
- 字节流读取中文字符时会乱码
- 字符流通过字节读取,解决中文字符乱码的问题
高级流(依赖于低级流)
1.字符缓冲流
File file=new File("C:\\Users\\853565469\\Desktop\\TestFile\\A.txt");
//创建字符输入流
Reader reader=new FileReader(file);
// 创建字符缓冲流
BufferedReader bf=new BufferedReader(reader);
//读取一行数据
String s=bf.readLine();
s=bf.readLine();//当读到末尾会返回null
System.out.println(s);
2.对象流(依赖低级流)
使用对象流时,对象必须序列化
即继承Serializable 接口
例对象输出流
//字节输出流
OutputStream out=new FileOutputStream(file);
//对象输出流,高级流
ObjectOutputStream objOut=new ObjectOutputStream(out);
/*
* 创建对象
* java.io.NotSerializableException://未序列化异常
*/
User user=new User("张三", 1, "2345");
// 把对象写到对象流去
objOut.writeObject(user);
3.易错区
1. 字符流与字节流的区别是
前者是块读写,后者是字节读写
2.字符输出流类的抽象父类是:Writer
要序列化的对象,其所属的类必须实现 Serializable 接口,序列化时通过类ObjectOutputStream的 WriteObject 方法来实现,反序列化通过ObjectInputStream类 __readObject___方法来实现。