创建文件
通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。
File(File parent, String child); |
---|
通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。
File(String pathname) |
---|
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(String parent, String child) |
---|
通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。
File(URI uri) |
---|
创建目录:
File类中有两个方法可以用来创建文件夹:
● mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
● mkdirs()方法创建一个文件夹和它的所有父文件夹。
public class FileDemo01 {
public static void main(String[] args) {
//创建文件
File f1 = new File("E:\\itcase\\java.txt");
System.out.println("f1.createNewFile()");
System.out.println("--------");
//创建目录
File f2 = new File("E:\\itcase\\JavaWEB\\HTML");
System.out.println(f2.mkdir());
System.out.println("--------");
//创建多级目录
File f3 = new File("E:\\itcase\\javase.txt");
System.out.println(f3.mkdirs());
System.out.println("--------");
File f4 = new File("E:\\itcase\\javase.txt");
System.out.println("f4.createNewFile()");
}
}
常用方法:
public class FileDemo02 {
public static void main(String[] args) {
File f = new File("myFile\\java.txt");
//public boolean isDirectory():测试此抽象路径名表示的File是否为目录
//public boolean isFile():测试此抽象路径名表示的File是否为文件
//public boolean exists():测试此抽象路径名表示的File是否存在
System.out.println(f.isDirectory());
System.out.println(f.isFile());
System.out.println(f.exists());
System.out.println("--------");
//public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
//public String getpath():将此抽象路径名转换为路径名字符串
//oublic String getName():返回由此抽象路径名表示的文件或目录的名称
System.out.println(f.getAbsolutePath());
System.out.println(f.getPath());
System.out.println(f.getName());
System.out.println("--------");
//punlic String[] list():返回此抽象路径名表示的目录中的名称字符串、
//public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File对象数组
File f2 = new File("E:\\itcase");
String[] strArray = f2.list();
for(String str : strArray)
{
System.out.println(str);
}
System.out.println("--------");
File[] fileArray = f2.listFiles();
for(File file : fileArray) {
if(file.isFile()) {
System.out.println(file.getName());
}
}
}
}
输出样例:
删除功能
方法名:public boolean delete()
说明:删除由此抽象路径名表示的文件或目录
绝对路径和相对路径的区别
● 绝对路径: 完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如: E:\itcast\java.txt
● 相对路径: 必须使用取自其他路径名的信息进行解释。例如: myFile\Vjava.txt
public class FileDemo03 {
public static void main(String[] args) throws IOException {
File f1 = new File("myFile\\java.txt");
System.out.println(f1.createNewFile());
//删除当前目录下的java.txt文件
System.out.println(f1.delete());
System.out.println("--------");
//在当前模块目录下创建itcase目录
File f2 = new File("myFile\\itcase");
System.out.println(f2.mkdir());
System.out.println(f2.delete());
//在当前模块下创建一个目录itcase,然后在该目录下创建一个文件java。txt
File f3 = new File("myFile\\itcase");
System.out.println(f3.mkdir());
File f4 = new File("myFile\\itcase\\java.txt");
System.out.println(f4.createNewFile());
//删除当前模块下的目录itcase
System.out.println(f4.delete());
System.out.println(f3.delete());
}
}
注意事项:
● 如果一个目录中有内容(目录, 文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录
递归打印多级目录
package com.itheima;
import java.io.File;
public class FileDemo04 {
public static void main(String[] args) {
File file = new File("e:\\itcase");
getAllFile(file);
}
public static void getAllFile(File dir){
System.out.println(dir);
File[] files = dir.listFiles();
for(File f : files) {
if(f.isDirectory()) {
getAllFile(f);
}else{
System.out.println(f);
}
}
}
}
输出样例:
搜索后缀为.java的文件
package com.itheima;
import java.io.File;
public class FileDemo04 {
public static void main(String[] args) {
File file = new File("e:\\itcase");
getAllFile(file);
}
public static void getAllFile(File dir){
File[] files = dir.listFiles();
for(File f : files) {
if(f.isDirectory()) {
getAllFile(f);
}else{
String s = f.toString();
boolean b =s.endsWith(".java");
if(b) {
System.out.println(f);
}
}
}
}
}
输出样例:
文件过滤器:FileFilter和FilenameFilter接口
使用文件过滤器需要自己定义接口的实现类。
import java.io.File;
public class FileDemo04 {
public static void main(String[] args) {
File file = new File("e:\\itcase");
getAllFile(file);
}
public static void getAllFile(File dir){
File[] files = dir.listFiles(new FileFilterImpl());
assert files != null;
for(File f : files) {
if(f.isDirectory()) {
getAllFile(f);
}else{
System.out.println(f);
}
}
}
}
import java.io.File;
import java.io.FileFilter;
public class FileFilterImpl implements FileFilter {
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory()) {
return true;
}
return pathname.getName().toLowerCase().endsWith(".java");
}
}
输出样例:
使用Lambda优化上面代码
package com.itheima;
import java.io.File;
public class FileDemo04 {
public static void main(String[] args) {
File file = new File("e:\\itcase");
getAllFile(file);
}
public static void getAllFile(File dir){
//使用Lambad优化
File[] files = dir.listFiles(pathname->pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java"));
for(File f : files) {
if(f.isDirectory()) {
getAllFile(f);
}else{
System.out.println(f);
}
}
}
}
输出样例: