01.File文件基本操作

时间:2023-11-29 08:52:14

1-创建File对象

    /**
* 创建我们 java.io.File对象
*/
public static void test1()
{
//第一创建对象方式
File parent=new File("f:/lsh"); //设置一个目录对象
String child="刘诗华.txt"; //指定文件名
File file1=new File(parent, child); //目录对象,文件名 //第二种创建对象方式  指定一个文件名 表示方法为字符串
File file2=new File("f:/lsh/刘诗华.txt"); //第三种创建方式 目录和文件都是用字符表示,但是目录和文件是分开来的
File file3=new File("f:/lsh/","刘诗华.txt"); System.out.println("对象1="+file1);
System.out.println("对象2="+file2);
System.out.println("对象3="+file3); //打印结果如下显示
//对象1=f:\lsh\刘诗华.txt
//对象2=f:\lsh\刘诗华.txt
//对象3=f:\lsh\刘诗华.txt }

2.检查我们文件是否存在

public static void exists() {

        File file2=new File("f:/lsh/刘诗华.txt");
boolean b = file2.exists(); //如果硬盘上面存在刘诗华.txt文件 则会返回true 否则就是返回false
System.out.println(b); //因为我的电脑上面没有文件,所以返回false
}

3.创建文件

    private static void createNewFile() throws IOException {

        File file2=new File("f:/lsh/刘诗华.txt");
boolean b = file2.exists(); //如果硬盘上面存在刘诗华.txt文件 则会返回true 否则就是返回false //如果不存在,则创建
//因为我们调用 file2.exists()得到的结果为 false 我们对结果取反之后 会得到 true,就会执行if代码块的程序
if(!b)
{
file2.createNewFile();
System.out.println("文件创建成功");
} }

4-修改文件名称

    private static void renameTo() {

        File file2=new File("f:/lsh/刘诗华.txt");  //源文件名称

        File dest=new File("f:/lsh/hello.txt"); //新文件名

        // public boolean renameTo(File dest)  JDK里面是文档是传入一个新File对象
file2.renameTo(dest); //执行文件更名操作 }

5.删除文件

    private static void delete() {

        File file2=new File("f:/lsh/刘诗华.txt");  //要删除的文件对象

        //判断文件是否存在,如果存在则执行删除delete()方法
if(file2.exists())
{
file2.delete();
System.out.println("删除文件成功");
} }

6.创建目录文件夹

    private static void mkdir() {

        //定义一个文件夹
File dir =new File("f:/lsh");
//判断文件夹是否存在
if(!dir.exists())
{
dir.mkdir(); // mkdir方法创建 lsh一级目录
// dir.mkdirs(); // mkdirs方法会创建不存在父级目录文件
} }

7.修改文件夹名称

    private static void modify() {

        //定义一个文件夹
File dir =new File("f:/lsh"); if(dir.exists())
{
File dest=new File("f:/xxxx");
dir.renameTo(dest);
} }

8.列表文件夹下面的所有的文件

    private static void list() {

        File dir =new File("f:/xxxx");

        if(dir.exists())
{
// list() 返回的是一个字符串数组类型
String[] list = dir.list(); for (String string : list) {
System.out.println(string);
}
}
else
{
System.out.println("目录不存在");
} }

9.列表指定文件夹下面的文件,返回的是一个File对象数组

    //列表指定文件夹下面的文件
private static void listFile() { File dir =new File("f:/xxxx"); if(dir.exists())
{
// listFiles() 返回的是一个File数组对象
// 所以File的相关操作我们都可以方便使用
File[] list = dir.listFiles(); for (File file : list) {
System.out.println(file);
}
}
else
{
System.out.println("目录不存在");
} }

10.列表指定文件夹下面的文件,并做过滤

第一种采用匿名内部类

    private static void filter() {

        File dir=new File("f:/xxxx");

        if(!dir.exists())
{
System.out.println("文件夹不存在");
return;
} dir.listFiles(new FilenameFilter(){ public boolean accept(File dir, String name) { boolean b=false; if(dir.isFile() && name.endsWith("docx"))
{
b=true;
} return b; } });
}

第二种方法采用实现接口方式来做

class Filter implements FilenameFilter
{
@Override
public boolean accept(File dir, String name) { boolean b=false; //通过dir和name变量 创建一个file对象,如果是文件 并且是 docx结尾的文件,则返回true
if(new File(dir,name).isFile() && name.endsWith("docx"))
{
b=true;
}
return b;
}
} private static void filter() { File dir=new File("f:/xxxx"); if(!dir.exists())
{
System.out.println("文件夹不存在");
return;
} Filter filter=new Filter();
File[] list = dir.listFiles(filter); for (File file : list) {
System.out.println(file);
}
}

11.删除某个文件夹

    public static void main(String[] args) {

        File dir=new File("f:/abc");
removeDir(dir);
} //删除目录下面的所有文件和本目录
private static void removeDir(File dir) { //判断目录是否存在磁盘中
if(!dir.exists())
{
System.out.println("对不起,目录不存在");
return;
}
//列表所有的文件信息
File[] list = dir.listFiles();
for (File file : list) {
//不管是什么,如果是目录,下面有文件,则删除不成功
//如果是文件,或者是空目录,会直接删除的,这里不会报异常的,所有我们不用它
file.delete();
if(file.isDirectory())
{
//采用递归方法进行删除
removeDir(file);
}
}
//最后把自己的目录(空)也删除掉
dir.delete();
}