java024File类和策略模式

一,File类:(这个类是专门用来操作文件的一个类)
在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期等,还可以浏览子目录层次结构。File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性。
1,exists():判断文件或文件夹是否存在
2,createNewFile():创建文件
3,mkdir():创建文件夹
4,mkdirs():创建多级文件夹
5,getAbsoluteFile():获得文件绝对路径
综合练习:

File d=new File("d:/12.txt");
	File f=new File("d:/12");
	if(!f.exists()){ //判断12文件夹存在不
	f.mkdir();//如果不存在就创建一个
	}
	if(!d.exists()){//判断12.txt文件存在吗
		d.createNewFile();//如果不存在就创建一个
	}
	System.out.println(f.getAbsoluteFile());
	System.out.println(d.getAbsoluteFile());
	//获得文件绝对路径
	}
}

在这里插入图片描述
创建多级目录练习:

File f=new File("d:/12/23/34");
f.mkdirs();

5,getName():获取文件名
6,isDirectory():是否是文件夹
7,length():获取文件的内容大小:根据jdk码表获取文件内容大小,汉字占两个字节,字母占1个字节
8,isFile():是否是文件
在这里插入图片描述
9,d.renameTo(new File(“d:/xyz”)):文件重命名,顺序是先删除后创建,重命名后文件里面的内容还都在
重命名前:里面的内容“爱你三千遍在”
在这里插入图片描述
命名代码:

File d=new File("d:/12.txt");
	
	d.renameTo(new File("d:/zyy.txt"));

重命名之后,12.txt被删除,出现一个zyy.txt文件,里面的“爱你三千遍”还在
注意:如果重命名的时候不写盘符,那么重命名后的文件就会找不到。
在这里插入图片描述
10,list():罗列出当前文件夹底下所有文件,只罗列一层
直接罗列只会输出一个地址:
在这里插入图片描述

File d=new File("d:/12.txt");
	File f=new File("d:/zyy");
	File[]file=f.listFiles();
	for(File file2 :file){
		System.out.println(file2.getName());
	}

在这里插入图片描述
11,delete():删除文件或文件夹
12,listRoots():罗列出电脑上的所有盘符
13,getAbsolutePath():获取绝对路径
二,遍历文件:就是一层一层的往下罗列文件
在这里插入图片描述
三,获取文件的后缀名:
在这里插入图片描述
四,策略模式:
结果随着参数的变化而变化就是策略模式。
就比如说,我们是大佬,写了一个代码进行对文件的操作,我们把它发到网上去(发布的是字节码,为了保护我们的代码不被破坏,或者因为专利问题而烦恼。用户是看不了我们的源码的,除非用户进行反编译。但是开源的可能发布就是源码),用户想对文件进行不同的操作,只需要改变不同的参数即可以让结果发生变化。
在这里插入图片描述
代码:


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Arrays;
//处理者
interface Procesor{
	//处理方法
	public void process(File f);
}
//处理1,获取绝对路径
class A implements Procesor{
	public void process(File f) {
		System.out.println(f.getAbsolutePath());
	}
}
//处理2:输出所有
class B implements Procesor{
	public void process(File f) {
		System.out.println(f);
	}
}
//处理3,选择性给文件重命名
class C implements Procesor{

	public void process(File f) {
		if(!f.isDirectory()){
			if(f.getName().startsWith("桥")){
				String kk=f.getName();
				String name=f.getParent();
				System.out.println(name);
				String[] tt=kk.split("\\.");
				System.out.println(f.renameTo(new File(name+"/你."+tt[1])));
			}
		}
	}
}
//对文件的操作方法
public class Test2 {
	public  void walk(File file,Procesor p){
		try {
			File[] f1=file.listFiles();
			for (File file2 : f1) {
				if(file2.isDirectory()){
					walk(file2,p);
				}
				p.process(file2);
			}
		} catch (Exception e) {	
		}
	}
	public static void main(String[] args) throws Exception {
		Test2 t=new Test2();
		Procesor p=new B();
		t.walk(new File("d:zyy"), p);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44699728/article/details/89674404