io编程
学习目标
1、掌握Java.io包中类的继承关系。
2、掌握File类的使用,并且可以通过File类进行文件的创造、删除、文件夹的列表等操作。
3、掌握字节流和字符流操作文件内容以及字节流与字符流的区别。
4、掌握内存流、管道流、打印流、扫描流的使用。
5、对象序列化的作用以及Serializable接口,transient关键字的使用。
6、RandomAccessFile随机读/写操作的操作的操作理解原来与使用。
7、System.out、System.err、System.in
一、File文件操作
java.io.File 类是一个与文件本身操作有关的类,此类可以实现文件的,
创建、删除、重命名、取得文件大小、修改日期等常见的系统文件操作。
File 类基本使用
如果使用FIle类则必须提供完整的文件操作路径,通过File类的构造方法完成,可以进行文件的创建与删除。
File类文件基本操作方法
方法 | 类型 | 描述 |
---|---|---|
public File (String pathname) | 构造 | 给定一个要操作文件的完整路径 |
public File (File parent,String child) | 构造 | 给定要操作文件的父路径和子文件名称 |
public boolean creatNewFile() throws IOException | 普通 | 创建文件 |
public boolean delete() | 普通 | 删除文件 |
public boolean exists() | 普通 | 判断路径是否存在 |
范例:使用File类实现文件的创建与删除
import java.io.File;
/**
* @ClassName : JavaIODemo //类名
* @Description : 使用File类实现文件的创建与删除 //描述
* @Author : *** //作者
* @Date: 2021-07-24 10:01 //日期
*/
public class JavaIODemo {
public static void main(String[] args) throws Exception{
File file = new File("D:\\IO.txt"); //文件创建路径
if (file.exists()){
//判断文件是否存在
file.delete(); //删除文件
}else{
System.out.println(file.createNewFile()); //创建新的文件
}
}
}
程序输出结果:
true
File类深入操作
为了解决不同操作系统的路径分隔符问题,在java.io.File类中提供了一个路径分隔符
路径分隔符:public static final String separator
定义方式:
File file1 = new File("D:"+File.separator+"io.txt");
File 类父路径操作方法
方法 | 类型 | 描述 |
---|---|---|
public File getParentFile() | 普通 | 找到一个指定路径的父路径 |
public boolean mkdirs() | 普通 | 创建指定目录 |
范例:创建带目录的文件
import java.io.File;
/**
* @ClassName : JavaIODemo1 //类名
* @Description : 创建带目录的文件 //描述
* @Author : *** //作者
* @Date: 2021-07-24 10:39 //日期
*/
public class JavaIODemo1 {
public static void main(String[] args) throws Exception{
File file = new File("D:"+File.separator+"hello"+"IO1.txt");
if (!file.getParentFile().exists()){
//父路径不存在
file.getParentFile().mkdirs(); //创建父路径
}
if (file.exists()){
//文件存在
file.delete(); //文件删除
}else {
//文件不存在
System.out.println(file.createNewFile()); //创建新的文件
}
}
}
程序输出结果:
true
获取文件信息
获取文件元数据信息的方法
方法 | 类型 | 描述 |
---|---|---|
public boolean canRead() | 普通 | 文件是否能读 |
public boolean canWrite() | 普通 | 文件是否能写 |
public boolean canExecute() | 普通 | 文件是否能执行 |
public long length() | 普通 | 获取文件大小 |
public long lastModified() | 普通 | 获得最后一次修改日期 |
public boolean isDirecttory() | 普通 | 是否是目录 |
public boolean isFile() | 普通 | 是否是文件 |
public boolean isHidden() | 普通 | 是否隐藏 |
public File[] listFiles() | 普通 | 列出目录中的全部文件信息 |
范例:获取文件基础信息
public class JavaIODemo2 {
public static void main(String[] args) {
File file = new File("D:"+File.separator+"adc.jpg");
System.out.println("文件是否能读:"+file.canRead());
System.out.println("文件是否能写:"+file.canWrite());
System.out.println("文件大小:"+MathUtil1.round(file.length()/(double) 1024 /1024,2)+"M");
System.out.println("最后一次修改日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
System.out.println("是否是目录:"+file.isFile());
}
}
class MathUtil1{
private MathUtil1(){
}
public static double round(double num,int scale){
return Math.round(Math.pow(10,scale)*num)/Math.pow(10,scale);
}
}
程序输出结果:
文件是否能读:false
文件是否能写:false
文件大小:0.0M
最后一次修改日期:1970-01-01 08:00:00
是否是目录:false
范例:列出目录组成