Java输入与输出(1)
1、File类
1.1、File类定义
-
File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类。=
-
File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较。
-
File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
-
File类代表一个特定的文件或者目录(文件夹),并提供了若干方法对该文件或目录进行操作。
重点词需记:file(文件),directory(文件夹),path(路径)
1.2、File类构造方法(常用摘要)
1)File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
public class Test2
public static void main(String[] args){
File file=new File("xxx");
System.out.println(file.getPath()); //路径结果就是xxx
}
}
2)File(File parent, String child):通过parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
若子路径child为Null,会抛出NullPointerException空异常错误
当父路径为Null时,会以子路径child作为绝对路径创建实例,等同于调用第一个File(String child )效果一样
public class Test2{
public static void main(String[] args){
String parent=null;
File file=new File(parent,"xxx");
System.out.println(file.getPath()); //路径结果就是xxx
}
}
当父路径不为空时,会以父路径作为目录,子路径作为父路径下的目录或者文件名,最后得到的实例对象的路径就是父路径和子路径的组合
public class Test2{
public static void main(String[] args){
String parent = "E:/test";
File parentFile= new File(parent);
String child = "E:/test/1.txt";
File file = new File(parentFile, child);
System.out.println(file.getPath()); // 路径结果就是E:\test\E:\test\1.txt
}
}
3)File(String parent, String child):通过parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
public class Test2{
public static void main(String[] args){
String parent = "E:/test";
File parentFile= new File(parent);
String child = "E:/test/1.txt";
File file = new File(parentFile, child);
System.out.println(file.getPath()); // 路径结果就是E:\test\E:\test\1.txt
}
}
1.3、主要成员方法
1)获取的方法 (方法摘要)
String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
String getName()
返回由此抽象路径名表示的文件或目录的名称。
String getPath()
将此抽象路径名转换为一个路径名字符串。
long length()
返回由此抽象路径名表示的文件的长度。
//获取文件绝对路径
private static void show04() {
File file=new File("F:\\04Java\\19java");
File absoluteFile=file.getAbsoluteFile();//返回File对象的绝对路径
System.out.println(absoluteFile);
File file2=new File("a.txt");
File absoluteFile2=file2.getAbsoluteFile();//返回File对象的绝对路径
System.out.println(absoluteFile2);
System.out.println("____________________________");
}
//file1.getName() 获取最后一个路径名
private static void show02(){
File file=new File("F:\\04Java\\19java");
String name=file.getName();//最后的路径名
System.out.println(name);
File file1=new File("F:\\04Java\\19java\\小小张自由");
String name1=file1.getName();//最后的路径名
System.out.println(name1);
}
//file.getPath() 构造函数中传递什么值,就返回什么值
private static void show01(){
File file=new File("F:\\04Java\\19java");
String path=file.getPath();//传递的参数是什么,返回值就是什么
System.out.println(path);
File file1=new File("b.txt");
String path1=file1.getPath();
System.out.println(path1);
}
//file.length() 获取文件的大小
private static void show03(){
File file=new File("F:\\迅雷下载\\AirtestIDE-win-1.2.6.zip");
long length=file.length();//文件名的大小,路径错误则为0
System.out.println(length);//单位字节
}
2)判断的方法(方法摘要)
boolean exists()
测试此抽象路径名表示的文件或目录是否存在
boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件。
//用于判断构造函数中给定的路径是否为目录、文件
public static void main(String[] args){
File file = new File("F:\\04Java\\19java");
System.out.println(file.exists());//判断文件名是否存在
System.out.println(file.isDirectory());//判断是否以文件夹结尾
System.out.println(file.isFile());//判断是否以文件结尾
}
3)创建删除的方法(方法摘要)
boolean createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
boolean delete()
删除此抽象路径名表示的文件或目录。
boolean mkdir()
创建此抽象路径名指定的目录。
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
//File类中CreateNewFile()方法只能新建文件,创建成功true
private static void show01()throws IOException{
File file=new File("F:\\04Java\\19java\\99.txt");
boolean newFile=file.createNewFile();//只能新建文件,创建成功true
System.out.println(newFile);
}
//File类中Delete()方法
private static void show03(){
File file=new File("F:\\04Java\\19java\\HelloJava");
boolean delete=file.delete();//可以删除文件夹只能是空文件夹
System.out.println(delete);
File file1=new File("F:\\04Java\\19java\\99.txt");
boolean delete1=file1.delete();//可以删除文件
System.out.println(delete1);
}
//File类中mkdir()和mkdirs()的方法创建单级、多级目录
private static void show02(){
File file=new File("F:\\04Java\\19java\\HelloJava");
boolean mkdir=file.mkdir();//创建单级目录
System.out.println(mkdir);
File file1=new File("F:\\04Java\\19java\\Hello\\Java");
boolean mkdirs=file1.mkdirs();//创建多级目录
System.out.println(mkdirs);
}
4)目录的遍历(方法摘要)
String[] list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
-
当实例对象代表的是文件不是目录时,返回NUll对象
-
获取的是该目录下的文件名和目录名,并不包含该目录名称和其上级目录名称
-
字符串数组中都是文件名或目录名并不是路径名
-
字符串中的元素并不是按照实际系统中目录下的顺序排列的
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
//file.listFiles();方法返回值是一个File[]
private static void show02(){
File file=new File("F:\\04Java\\19java");
File[]files=file.listFiles();
for(File file1:files){
System.out.println(file1);
}
}
//file.list();方法返回值是一个String[]
private static void show01(){
File file=new File("F:\\04Java\\19java");
String[] list=file.list();
System.out.println(list);//地址值
for(String i:list){
System.out.println(i);
}
}
注意:构造函数只是创建一个File实例,并没有以文件做读取等操作,因此路径即使是错误的,也可以创建实例不报错