File

本文介绍了Java中File类,它是文件和目录路径名的抽象表示。阐述了其静态成员变量可解决平台文件分隔符差异问题,还介绍了构造方法。详细说明了文件的创建、删除、重命名、查询操作,以及文件的相关属性功能,如判断是否为文件、是否可读等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

File

文件和目录路径名的抽象表示形式

静态成员变量

1.static String pathSeparator //与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
2.static char pathSeparatorChar // 与系统有关的路径分隔符。
3.static String separator // 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
4.static char separatorChar // 与系统有关的默认名称分隔符。

注:由于平台的差异导致文件分隔符各有不同,而使用上述静态方法 .则可以解决这个问题

构造方法

1.public File(String pathname) pathname文件路径名

2.public File(String parent,String child) 父路径名 子路径名

3.public File(File parent,String child) 通过父文件对象和子文件名称构造文件对象

public class FileDemo01 {
	public static void main(String[] args) throws IOException {
		
		System.out.println(File.pathSeparator); // 路径分隔符 ;
		System.out.println(File.separator); // 路径名称分隔符
		
		String fileName = "D:\\oitest";
		String fileName2 = "D:" + File.separator + "oitest";
		System.out.println(fileName2);
		
		// public File(String pathname)  pathname文件路径名
		File f = new File("D:\\oitest");
		
		// public File(String parent,String child) 父路径名 子路径名
		File f2 = new File("D:", "oitest");
		System.out.println(f2);
		
		// public File(File parent,String child)  通过父文件对象和子文件名称构造文件对象
		File f3 = new File(new File("D:"), "oitest");
		System.out.println(f3);
		
		File f4 = new File("a.txt"); // 相对于系统工程目录下
		// D:\Java_0408\CodeLibraryForJava0408\day0430_filedemo\a.txt
		System.out.println(f4.getAbsolutePath());
		System.out.println("createNewFile: " + f4.createNewFile());
		
		// 类路径 src下面
		File f5 = new File("src\\b.txt");
		System.out.println("createNewFile: " + f5.createNewFile());
		
		File f6 = new File("/src/sz/lz/fileDemo/FileDemo01.java");
		System.out.println("createNewFile: " + f6.createNewFile());
		System.out.println(f6.getAbsolutePath());
	}
}

文件的创建

boolean createNewFile() : 若文件不存在则创建文件

注意:

1.该方法会抛出一个IOException异常,该异常是一个编译时异常,必须处理

2.该方法创建的是文件,而不是文件夹

3.如果文件已经创建,就不会再创建了,返回false

boolean mkdir() :创建目录 make Directory

注意:

1.该方法没有异常

2.该方法创建的是文件夹

3.如果文件已经创建,就不会再创建了,返回false

boolean mkdirs() :创建目录及不存在的父目录

注意:

1.该方法没有异常

2.该方法创建的是连续的文件夹

3.如果文件已经创建,就不会再创建了,返回false

记住:无论做任何的操作,第一步都必须封装文件路径

    public static void main(String[] args) throws IOException {
            // 在工程目录下创建 hello.txt
            File f = new File("hello.txt");
            System.out.println("createNewFile: " + f.createNewFile());

            // 在工程目录下创建 hello文件夹
            File f2 = new File("helloworld");
            System.out.println("mkdir: " + f2.mkdir());

            // 在工程目录下创建 good/boy.txt文件夹
            File f3 = new File("good");
            File f4 = new File(f3, "boy.txt");
            System.out.println("mkdir: " + f3.mkdir());
            System.out.println("createNewFile: " + f4.createNewFile());

            // 在工程目录下创建 aaa/bbb/ccc/ddd/eee.txt
            File f5 = new File("aaa/bbb/ccc/ddd");
            File f6 = new File(f5, "eee.txt");
            System.out.println("mkdirs: " + f5.mkdirs());
            System.out.println("createNewFile: " + f6.createNewFile());
        }

文件的删除

public boolean delete() 删除文件及空目录

注意:

1.既可以删除文件,也可以删除文件夹

2.删除文件夹,文件夹必须是空的

public static void main(String[] args) throws IOException {
		File f = new File("good/boy.txt");
		System.out.println("delete: " + f.delete());
		
		File f2 = new File("good");
		System.out.println("delete: " + f2.delete());
		
		File f3 = new File("aaa");
		System.out.println("delete: " + f3.delete());
	}

文件的重命名

public boolean renameTo(File dest) 重命名为dest

public static void main(String[] args) throws IOException {
		File f = new File("hello.txt");
		File dest = new File("helloWorld.txt");
		System.out.println("renameTo: " + f.renameTo(dest));
		
		File f2 = new File("a.txt");
		System.out.println("renameTo: " + f2.renameTo(new File("aaa/bbb/ccc/ddd/yyy.txt")));
		
	}

文件的查询

public String[] list() 返回file下的文件和目录名称(字符串)

public File[] listFiles() 返回file下的文件和目录(文件)

public String[] list(FilenameFilter filter) 根据filter过滤返回file下文件和目录名称

public File[] listFiles(FileFilter filter) 根据filter过滤返回file下文件和目录

	public static void main(String[] args) throws IOException {
//		File f = new File("aaa/bbb/ccc/ddd");
//		String[] fileNames = f.list();
//		for (String fileName : fileNames) {
//			System.out.println(fileName);
//		}
//		
//		// public File[] listFiles()  返回file下的文件和目录(文件)
//		File[] files = f.listFiles();
//		for (File file : files) {
//			System.out.println(file + "|" + file.getAbsolutePath());
//		}
		
		/*
		 *  public String[] list(FilenameFilter filter)  根据filter过滤返回file下文件和目录名称
		 *	public  File[] listFiles(FileFilter filter)  根据filter过滤返回file下文件和目录
		 */
//		File f = new File("src/com/sxt/filedemo");
//		String[] fileNames = f.list(new FilenameFilter() {
//			
//			@Override
//			public boolean accept(File dir, String name) {
////				File f = new File(dir, name);
////				String fileName = f.getName();
////				if (fileName.endsWith(".java") && f.isFile()) {
////					return true;
////				} else {
////					return false;
////				}
//				return name.endsWith(".java") && new File(dir, name).isFile();
//			}
//		});
//		
//		for (String fileName : fileNames) {
//			System.out.println(fileName);
//		}
		// public  File[] listFiles(FileFilter filter)  根据filter过滤返回file下文件和目录
		// 接口回调: 设计者定义好接口,由设计将接口的形参和返回值继续使用,实现由调用者来实现
		// 事件
		
		/*
		 * FileFilter filter = new FileFilter() {
				@Override
				public boolean accept(File f) {
					return f.getName().endsWith(".java") && f.isFile();
				}
			}
		 * 
		 * public File[] listFiles(FileFilter filter) {
		        String ss[] = f.list();
		        if (ss == null) return null;
		        ArrayList<File> files = new ArrayList<>();
		        for (String s : ss) {
		            File f = new File(s, this);
		            if ((filter == null) || filter.accept(f))
		                files.add(f);
		        }
		        return files.toArray(new File[files.size()]);
		    }
		 */
		File f = new File("src/com/sxt/filedemo");
		File[] files = f.listFiles(new FileFilter() {
			
			@Override
			public boolean accept(File f) {
				return f.getName().endsWith(".java") && f.isFile();
			}
		});
		
		for (File file : files) {
			System.out.println(file);
		}
	}
}

文件的相关属性功能

public boolean isFile() 是否文件
public boolean isDirectory() 是否目录
public boolean canRead() 是否可读
public boolean canWrite() 是否可写
public boolean exists() 是否存在
public boolean isHidden() 是否隐藏
public long length() 长度
public String getAbsolutePath() 绝对路径
public String getPath() 定义的路径
public String getName() file名字
public long lastModified() 最后一次修改时间

public static void main(String[] args) {
		File f = new File("aaa/bbb/ccc/ddd/eee.txt");
		System.out.println("isFile: " + f.isFile()); // true
		System.out.println("isDirectory: " + f.isDirectory()); // false
		System.out.println("canRead: " + f.canRead()); // true
		System.out.println("canWrite: " + f.canWrite()); // true
		System.out.println("isHidden: " + f.isHidden()); // false
		System.out.println("length: " + f.length()); // 8
		System.out.println("getAbsolutePath: " + f.getAbsolutePath());
		// D:\Java_0408\CodeLibraryForJava0408\day0430_filedemo\aaa\bbb\ccc\ddd\eee.txt
		System.out.println("getPath: " + f.getPath()); // aaa/bbb/ccc/ddd/eee.txt
		System.out.println("getName: " + f.getName()); // eee.txt
		System.out.println("lastModified: " + f.lastModified()); // 上次修改时间这里返回的是是1970年到最会修改的毫秒值,
		
		
		Date d = new Date(f.lastModified());
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String format = sdf.format(d);
		System.out.println(format);
		
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值