创建File类实例
在创建实例时,只是在内存层面创建了一个对象
- File(String pathname)
- 相对路径:在Idea中,使用JUnit单元测试方法,是指向当前的module下,使用main()方法,是指向当前Project下
- 绝对路径:在磁盘中的指定路径下
- File(String parentPath,String childPath)
- File(File parentFile,String pathname)
@Test
public void test01(){
//构造器1
//File(String pathname)
File file1 = new File("abc.txt");//相对路径:当对于当前的module下
File file2 = new File("E:\\code\\IOStream\\src\\com\\yellowstar\\file\\ABC.txt");//绝对路径:在磁盘的指定路径下
System.out.println(file1);
System.out.println(file2);
//构造器2
//File(String parentPath,String childPath)
File file3 = new File("E:\\code\\IOStream\\src\\com","yellowstar");
System.out.println(file3);
//构造器3
//File(File parentFile,String pathname)
File file4 = new File(file3,"ASD.txt");
System.out.println(file4);
}
路径分隔符的应用
在Java中“\”表示转义字符,在设置路径时,系统识别不出来
- Windows系统下:使用“\”
- Unix系统下:使用“/”
- File类也提供了一个常量,调用File.separator方法,可充当路径分隔符
File类的常用方法(获取)
- getAbsoluteFile():获取绝对路径
- getPath():获取路径
- getName():获取名字
- getParent():获取上层文件路径,没有则返回null
- length():获取文件长度(字节数)
- lastModified()获取最后一次修改时间
以下两种方法只适用于文件夹
- list():返回当前目录下所有文件的名称
- listFiles():返回当前目录下所有文件
//File类获取的常用方法
@Test
public void test01(){
File file1 = new File("hello.txt");
File file2 = new File("e:\\io\\hi.txt");
System.out.println(file1.getAbsoluteFile());//获取绝对路径
System.out.println(file1.getPath());//获取路径
System.out.println(file1.getName());//获取名字
System.out.println(file1.getParent());//获取上层文件路径,没有则返回null
System.out.println(file1.length());//获取文件长度(字节数)
System.out.println(file1.lastModified());//获取最后一次修改时间
System.out.println();
System.out.println(file2.getAbsoluteFile());//获取绝对路径
System.out.println(file2.getPath());//获取路径
System.out.println(file2.getName());//获取名字
System.out.println(file2.getParent());//获取上层文件路径,没有则返回null
System.out.println(file2.length());//获取文件长度(字节数)
System.out.println(file2.lastModified());//获取最后一次修改时间
}
@Test
public void test02(){
File file1 = new File("E:\\code");
String[] list = file1.list();//返回当前目录下所有文件的名称
for(String s : list){
System.out.println(s);
}
File[] files = file1.listFiles();//返回当前目录下所有文件
for(File f : files){
System.out.println(f);
}
}
File常用方法(重命名)
个人理解:此方法是将file1的文件路径改成file2的路径
- file1.renameTo(file2):把文件重命名为指定文件路径
- 要求file1在硬盘中必须存在,file2在硬盘中不存在,满足上述条件则返回true
//File常用方法(重命名)
@Test
public void test03(){
File file1 = new File("hello.txt");
File file2 = new File("e:\\io\\hi.txt");
boolean b = file1.renameTo(file2);//把文件重命名为指定文件路径(要求file1必须存在,file2必须不存在才返回true)
System.out.println(b);
}
File常用方法(判断)
- isDirectory():判断是否为文件目录
- isFile():判断是否为文件
- exists():判断文件在硬盘中是否存在
- isHidden():判断文件是否隐藏
- canRead():判断文件是否可读
- canWrite():判断文件是否可写入
@Test
public void test01(){
File file1 = new File("hello.txt");
System.out.println(file1.isDirectory());//判断是否为文件目录
System.out.println(file1.isFile());//判断是否为文件
System.out.println(file1.exists());//判断文件在硬盘中是否存在
System.out.println(file1.isHidden());//判断文件是否隐藏
System.out.println(file1.canRead());//判断文件是否可读
System.out.println(file1.canWrite());//判断文件是否可写入
}
File常用方法(创建于删除)
- createNewFile():创建文件
- delete():删除文件或文件目录(删除文件目录时,如果文件目录下有文件或文件目录则不能删除),Java中的删除是不可逆的,不经过回收站的
- mkdir():创建文件目录,如果上层文件目录不存在,则不创建
- mkdirs():创建文件目录,如果上层文件目录不存在,则一并创建
@Test
public void test02() throws IOException {
File file1 = new File("hi.txt");
if(file1.exists()){
file1.delete();
System.out.println("删除成功");
}else {
file1.createNewFile();
System.out.println("创建成功");
}
}
@Test
public void test03(){
//当上级目录存在时,mkdir()和mkdirs()效果一样
File file1 = new File("e:\\io\\io1");
boolean mkdir1 = file1.mkdir();
if(mkdir1) {
System.out.println("创建成功1");
}
//当上级目录不存在时,mkdir()不会创建文件目录,mkdirs()连上级目录一起创建
File file2 = new File("e:\\io\\io2\\io1");
boolean mkdir2 = file2.mkdir();
if(mkdir2) {
System.out.println("创建成功2");
}
File file3 = new File("e:\\io\\io2\\io1");
boolean mkdir3 = file3.mkdirs();
if (mkdir3) {
System.out.println("创建成功3");
}
File file4 = new File("e:\\io\\io2");
boolean delete = file4.delete();
System.out.println(delete);
}