File类
文件和目录可以通过File封装成对象
File类的构造方法
方法名 | 说明 |
---|---|
File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 |
File(String parent, String child) | 从父路径名字符串和子路径名字符串创建新的 File实例 |
File(File parent, String child) | 从父抽象路径名和子路径名字符串创建新的 File实例 |
路径:
绝对路径:是一个完整的路径,从盘符开始
相对路径:是一个简化的路径,相对当前项目下的路径
File创建功能
方法名 | 说明 |
---|---|
public boolean createNewFile() | 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件 |
public boolean mkdir() | 创建由此抽象路径名命名的目录 |
public boolean mkdirs() | 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录 |
File创建功能
方法名 | 说明 |
---|---|
public boolean delete() | 删除由此抽象路径名表示的文件或目录 |
File类判断和获取功能
方法名 | 说明 |
---|---|
public boolean isDirectory() | 测试此抽象路径名表示的File是否为目录 |
public boolean isFile() | 测试此抽象路径名表示的File是否为文件 |
public boolean exists() | 测试此抽象路径名表示的File是否存在 |
public String getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
public String getPath() | 将此抽象路径名转换为路径名字符串 |
public String getName() | 返回由此抽象路径名表示的文件或目录的名称 |
public File[] listFiles() | 返回此抽象路径名表示的目录中的文件和目录的File对象数组 |
IO流
相对内存而言,输入流:从硬盘中读取数据到内存(读
输出流:从内存把数据保存到硬盘(写
IO流又分为 字节流和字符流。
如果操作纯文本文件,优先使用字符流,
如果操作图片、视频、音频等文件,优先使用字节流
字节流
字节流的抽象父类:InputStream 、 OutputStream
字节流写数据的三种方式
方法名 | 说明 |
---|---|
void write(int b) | 将指定的字节写入此文件输出流 一次写一个字节数据 |
void write(byte[] b) | 将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据 |
void write(byte[] b, int off, int len) | 将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据 |
//创建字节输出流
FileOutputStream fos=new FileOutputStream(new File("E:\\aaa\\a.txt"));
//第一种方法写void write(int b)
fos.write(97);
//第二种方法void write(byte[] b)
byte[] b ={
97,98,99};
fos.write(b);
//第三钟方法void write(byte[] b, int off, int len)
fos.write(b,0,2);
//释放资源
fos.close();
注意事项:
字节流换行:
windows: \r\n
linux: \n
mac: \r
当文件不存在时,会自动创建,当文件存在时,会清空原文件内容。
如想追加内容,可以在构造的时候加多一个参数true.
字节流读数据的方式
//创建输出流对象
FileInputStream fis=new FileInputStream(new File("E:\\aaa\\a.txt"));
//第一种方式:定义int变量获取读到的内容,
int len=-1;
/* while((len=fis.read())!=-1){
System.out.println((char)len);
}*/
System.out.println("==============");
//第二种方式:
byte[] bytes = new byte[1024];
while((len=fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
System.out.println("=================");
//第三种方式:
while ((len=fis.read(bytes,0,2))!=-1){
System.out.println(new String(bytes,0,len));
}
//释放资源
fis.close();
字节缓冲流
缓冲流相当于内部有一个缓冲区数组,读写速度更快
方法名 | 说明 |
---|---|
BufferedOutputStream(OutputStream out) | 创建字节缓冲输出流对象 |
BufferedInputStream(InputStream in) | 创建字节缓冲输入流对象 |
//BufferedOutputStream(OutputStream out)