我们要想实现IO的操作,就必须知道硬盘上文件的表现形式。
而Java就提供了一个类File供我们使用。
File java.io.File 文件和目录路径名的抽象表示形式,未必真实存在
1 构造方法
public File(String pathname)
构造函数,pathname必须是完整的路径名称,他表示的文件可能存在,也可能不存在
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
把e:\demo\a.txt封装成一个File对象
public static void main(String[] args) { File file = new File("E:\demo\a.txt"); File file2 = new File("E:\demo", "a.txt"); File file3 = new File("e:\demo"); File file4 = new File(file3, "a.txt"); // 以上三种方式其实效果一样 }
2 separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符
String path = "d:"+File.separator+"test.txt";
3 常见方法:
- 创建功能:
*public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
*public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
*public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
注意:你到底要创建文件还是文件夹,你最清楚,方法不要调错了。
示例:
// 需求:我要在e盘目录下创建一个文件夹demo File file = new File("e:\demo"); System.out.println("mkdir:" + file.mkdir());
// 需求:我要在e盘目录demo下创建一个文件a.txt File file2 = new File("e:\demo\a.txt"); System.out.println("createNewFile:" + file2.createNewFile());
// 需求:我要在e盘目录test下创建一个文件b.txt File file3 = new File("e:\test\b.txt"); System.out.println("createNewFile:" + file3.createNewFile()); Exception in thread "main" java.io.IOException: 系统找不到指定的路径。 注意:要想在某个目录下创建内容,该目录首先必须存在。
// 需求:我要在e盘目录test下创建aaa目录 File file4 = new File("e:\test\aaa"); //System.out.println("mkdir:" + file4.mkdir()); File file5 = new File("e:\test"); File file6 = new File("e:\test\aaa"); System.out.println("mkdir:" + file5.mkdir()); System.out.println("mkdir:" + file6.mkdir());
//级联创建文件夹 File file7 = new File("e:\aaa\bbb\ccc\ddd"); System.out.println("mkdirs:" + file7.mkdirs());
- 删除功能:public boolean delete()删除文件或空文件夹
注意:
A:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
B:Java中的删除不走回收站。
C:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录
// 删除功能:我要删除a.txt这个文件 File file3 = new File("a.txt"); System.out.println("delete:" + file3.delete()); // 删除功能:我要删除ccc这个文件夹 File file4 = new File("aaa\bbb\ccc"); System.out.println("delete:" + file4.delete()); // 删除功能:我要删除aaa文件夹 // File file5 = new File("aaa"); // System.out.println("delete:" + file5.delete()); File file6 = new File("aaa\bbb"); File file7 = new File("aaa"); System.out.println("delete:" + file6.delete()); System.out.println("delete:" + file7.delete());
- 重命名功能:public boolean renameTo(File dest)
如果路径名相同,就是改名。
如果路径名不同,就是改名并剪切。
* 路径以盘符开始:绝对路径 c:\a.txt
* 路径不以盘符开始:相对路径 a.txt
File file = new File("林青霞.jpg");
// 需求:我要修改这个文件的名称为"东方不败.jpg"
File newFile = new File("东方不败.jpg");
System.out.println("renameTo:" + file.renameTo(newFile));
File file2 = new File("东方不败.jpg");
File newFile2 = new File("e:\林青霞.jpg");
System.out.println("renameTo:" + file2.renameTo(newFile2));
- 判断功能:
* public boolean isDirectory():判断是否是目录
* public boolean isFile() :判断是否是文件
* public boolean exists() :判断是否存在
* public boolean canRead() :判断是否可读
* public boolean canWrite() :判断是否可写
* public boolean isHidden() :判断是否隐藏
File file = new File("a.txt");
System.out.println("isDirectory:" + file.isDirectory());// false
System.out.println("isFile:" + file.isFile());// true
System.out.println("exists:" + file.exists());// true
System.out.println("canRead:" + file.canRead());// true
System.out.println("canWrite:" + file.canWrite());// true
System.out.println("isHidden:" + file.isHidden());// false
- 获取功能:
* public String getAbsolutePath():获取绝对路径
* public String getPath():获取相对路径
* public String getName():获取名称
* public long length():获取长度。字节数
* public long lastModified():获取最后一次的修改时间,毫秒值
File file = new File("demo\test.txt");
System.out.println("getAbsolutePath:" + file.getAbsolutePath());
System.out.println("getPath:" + file.getPath());
System.out.println("getName:" + file.getName());
System.out.println("length:" + file.length());
System.out.println("lastModified:" + file.lastModified());
// 1416471971031
Date d = new Date(1416471971031L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);
- 获取功能:
* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
// 指定一个目录
File file = new File("e:\");
String[] strArray = file.list();
for (String s : strArray) {
System.out.println(s);
}
File[] fileArray = file.listFiles();
for (File f : fileArray) {
System.out.println(f.getName());
}
- 文件操作
public boolean exits() 文件是否存在
public boolean createNewFile() 创建新的文件
public boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件
File f1=new File("e:\2.txt");
if(!f1.exists()){
try { //不存在,创建
System.out.println("No!");
f1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}else{
System.out.println("Yes!");
}