File
File:File:文件和目录路径名的抽象表示;该实例File类是不可变的; 也就是说,一旦创建,由File对象表示的抽象路径名永远不会改变
File的构造方法如下:
- File(File parent, String child)
- File(String pathname)
- File(String parent, String child)
File的常用功能
- 创建功能
boolean createNewFile()
boolean mkdir()
boolean mkdirs() - 删除功能
boolean delete() - 获取功能
File getAbsoluteFile()
String getAbsolutePath()
String getName()
String getParent()
File getParentFile()
String getPath()
long lastModified()
long length() - 判断功能
boolean exists()
boolean isAbsolute()
boolean isDirectory()
boolean isFile()
boolean isHidden() - 修改名字的方法
boolean renameTo(File dest)
实例1:
package com.it01;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
//File(String pathname) 将指定的路径名转换为一个File对象
File f = new File("E:\\a\\a.txt");
//File(String parent, String child)根据指定的夫路径和文件路径创建File对象
File f2 = new File("E:\\a","a.txt");
//File(File parent, String child)根据指定的夫路径对象和文件路径创建File对象
File parent = new File("E:\\\\a");
File f3 = new File(parent,"a.txt");
File f4 = new File(new File("E:\\\\a"),"a.txt");
}
}
创建和删除功能实例:
package com.it01;
import java.io.File;
import java.io.IOException;
/*
* 创建和删除功能
* 创建功能
* boolean createNewFile()
* boolean mkdir()
* boolean mkdirs()
* 删除功能
* boolean delete()
*
* 注意:删除一个文件夹,文件夹下不能有子文件夹
*/
public class FileDemo2 {
public static void main(String[] args) throws IOException {
File f = new File("a.txt");
//boolean createNewFile():当指定文件不存在时创建成功,否则返回false
System.out.println(f.createNewFile());
//boolean mkdir()当指定文件夹不存在时创建成功,否则返回false
File f2 = new File("b");
System.out.println(f2.mkdir());
//boolean mkdirs()创建指定文件夹,当文件所在的目录不存在,则一并创建
File f3 = new File("c\\d\\e");
System.out.println(f3.mkdirs());
//boolean delete()当指定的文件或文件夹存在时删除文件返回true,否则返回false
//System.out.println(f2.delete());
System.out.println(f2.delete());
}
}
判断功能实例:
package com.it01;
import java.io.File;
/*
* 判断功能
* boolean exists()
* boolean isAbsolute()
* boolean isDirectory()
* boolean isFile()
* boolean isHidden()
*/
public class FileDemo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("a.txt");
//boolean exists()判断文件或者文件夹是否存在
System.out.println(f.exists());
//boolean isAbsolute()
File f2 = new File("a.txt");
System.out.println(f2.isAbsolute());
//boolean isDirectory()判断对象指向的路径是否是文件夹
File f3 = new File("a.txt");
System.out.println(f3.isDirectory());
//boolean isFile() 判断是否是文件(不判断文件夹)
File f4 = new File("a.txt");
System.out.println(f4.isFile());
//boolean isHidden()判断是否是隐藏文件或者文件夹
File f5 = new File("a.txt");
System.out.println(f5.isHidden());
}
}
获取和修改功能实例:
package com.it01;
import java.io.File;
import java.io.IOException;
import java.util.Date;
/*
* 获取功能
* File getAbsoluteFile()
* String getAbsolutePath()
* String getName()
* String getParent()
* File getParentFile()
* String getPath()
* long lastModified()
* long length()
* 修改功能
* boolean renameTo(File dest)
*/
public class FileDemo4 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File f = new File("a.txt");
// File getAbsoluteFile()---以file对象的形式返回当前file对象所指向的绝对路径
System.out.println(f.getAbsoluteFile());
//String getAbsolutePath()--- (获取的file对象所指向的绝对路径)
System.out.println(f.getAbsolutePath());
//String getParent()如果指向夫路径,则可能返回null
System.out.println(f.getParent());
//File getParentFile()
System.out.println(f.getParentFile());
File parent = new File("b");
File f2 = new File(parent,"c.txt");
if(!parent.exists()) {
parent.mkdirs();
}
System.out.println(f2.createNewFile());
System.out.println(f2.getParent());//b
System.out.println(f2.getParentFile());//b
//String getName() 返回文件名和文件夹的名称
System.out.println(f.getName());
//String getPath() 返回创建对象时给的路径有可能是相对也可能时绝对路径
System.out.println(f.getPath());
//long lastModified() 返回上一次修改的时间
System.out.println(f.lastModified());
Date d = new Date(f.lastModified());
System.out.println(d.toLocaleString());
//long length()返回file对象(文件)的字节数
System.out.println(f.length());
//boolean renameTo(File dest)将当前file对象所指向的路径修改为指定file所指向的路径(修改的文件路径不能存在,如果存在则修改失败)
File f3 = new File("b.txt");
System.out.println(f.renameTo(f3));
}
}
其他重要的获取功能实例:
package com.it01;
import java.io.File;
/*
* 重要的获取功能
* String[] list()
* File[] listFiles()
* static File[] listRoots()
*/
public class FileDemo5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("b");
//String[] list()返回当前路径下所有的文件和文件夹名称(只有指向文件夹下对象才能调用此方法)
String[] list = f.list();
for (int x=0;x<list.length;x++) {
System.out.println(list[x]);
}
//File[] listFiles()
File[] files = f.listFiles();
for (File file : files) {
System.out.println(file);
}
//static File[] listRoots()
File[] filelist = File.listRoots();
for (File file : filelist) {
System.out.println(file);
}
}
}
需求:输出指定目录下所有java文件名(包含子目录)
package com.it02;
import java.io.File;
/*
* 测试数据
* 需求:输出指定目录下所有java文件名(包含子目录)
*/
public class Test {
public static void main(String[] args) {
File f = new File("src");
method(f);
}
//输出指定目录下所有java文件名(包含子目录)
public static void method(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
// 判断是否时文件对象
if (f.isFile()) {
if (f.getName().endsWith(".java")) {
System.out.println(f.getName());
}
}else {
//说明是一个目录,紧接着调用自己
method(f);
}
}
}
}
//输出输出指定目录下所有java文件名
public static void method2(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
// 判断是否时文件对象
if (f.isFile()) {
if (f.getName().endsWith(".java")) {
System.out.println(f.getName());
}
}
}
}
}
}
需求:删除指定的目录(包含子目录)
package com.it02;
import java.io.File;
/*
* 需求:删除指定的目录(包含子目录)
*
* 注意:如果要删除一个目录,则需要先删除这个目录下的所有子文件和子目录
*/
public class Test2 {
public static void main(String[] args) {
File f = new File("需要删除的目录");
method(f);
}
public static void method(File file) {
if(file.isDirectory()) {
//删除自己子目录和子文件
//获取所有的子文件和子目录
File[] files = file.listFiles();
for(File f:files) {
if(f.isFile()) {
System.out.println(f.getName());
f.delete();
}
else if(f.isDirectory()) {
//继续查看是否还有文件和子目录
method(f);
}
}
//删除自己
System.out.println(file.getName());
file.delete();
}
}
}