一,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);
}
}