File类

File类

基本方法:

(一). 创建

boolean createNewFile():在指定位置创建文件,如果该文件存在,则不创建,返回false
boolean mkdir():创建文件夹
boolean mkdirs():创建多级文件夹

(二). 删除

boolean delete():删除失败返回false,如果文件正在使用,则删除不了返回false
void deleteOnExit():在程序退出时删除指定文件,特用来处理一些临时文件,用完就在退出的时候删除掉。

(三). 判断

boolean exists():文件是否存在
isFile():是否是文件
isDirectory():是否是文件夹
isHidden():是否隐藏
isAbsolute():判断路径是否是带有盘符的绝对路径。
注:判断文件对象是否是文件或者目的时,必须要先判断文件对象的内容是否存在,通过exists判断。

示例1:

import java.io.*;
class FileDemo1
{
    public static void main(String args[])
    {

    }

    public static void method5()
    {
        File f1 = new File("d:\\abcd\\file.txt");
        File f2 = new File("d:\\text.java");

        sop("rename"+f1.renameTo(f2));
    }

    public static void method4()
    {
        File f = new File("d:\\abcd\\file.txt");

        sop("path:"+f.getPath());
        sop("abspath:"+f.getAbsolutePath());

        sop("parent"+f.getParent());
    }


    public static void method3()
    {
        File f = new File("d:\\abcd\\file.txt");

        sop("dir:"+f.isDirectory());
        sop("file:"+f.isFile());

        sop(f.isAbsolute());
    }



    public static void method2() throws IOException
    {
        File f = new File("file.txt");

        sop("exists:"+f.exists());
        sop("Execute:"+f.canExecute());

        File dir = new File("abc\\kk\\ssss\\dddd\\snjd");
        sop("mkdir:"+dir.mkdirs());
    }


    public static void method1() throws IOException
    {
        File f = new File("file.txt");

        f.deleteOnExit();

        sop("create:"+f.createNewFile());
        sop("delete:"+f.delete());
    }


    public static void consMethod()
    {
        File f1 = new File("a.txt");

        File f2 = new File("c:\\abc","b.txt");

        File dir = new File("c:\\abc");
        File f3 = new File(dir,"c.txt");

        sop("f1"+f1);
        sop("f2"+f2);
        sop("f3"+f3);

        File file4 = new File("c:"+File.separator+"abc"+File.separator+"d.txt");
    }
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}

(四). 获取信息

String getName():获得文件名称,相对路径
String getPath():获得文件路径,相对路径
String getParent():获得文件的上级目录,没有上级目录则返回null
String getAbsolutePath():获得文件的绝对路径
Long lastModified():返回文件最后修改时间
Long length():返回文件大小

(五). 列出内容

String[] list():列出指定文件下的文件的文件路径
String[] list(过滤器[需要覆写public boolean accept(File dir,String name)方法]):
File[] listFiles():列出指定文件下的文件对象。
File[] listFiles(过滤器):

示例2:

import java.io.*;
class FileDemo2
{
    public static void main(String args[])
    {

    }

    public static void listFilesDemo
    {
        File dir = new File("c:\\");
        File files = dir.listFiles();

        for(File f:files)
        {
            System.out.println(f.getName()+"::"+f.length());
        }
    }

    public static void listDemo2()
    {
        File f = new File("c:\\abcs\\day18");
        String[] arr = f.list(new FilenameFilter()
        {
            public boolean accept(File dir,String name)//此处的dir为指定文件的文件名,name为dir目录中所有的文件名。
            {
                System.out.println("dir:"+dir+".......name---"+name);
                return name.endsWith(".java");
            }
        });
        for(String name:arr)
        {
            System.out.println(name);
        }
    }


    public static void listDemo()
    {
        File f = new File("c:\\abc.txt");
        String[] names = f.list();//调用list方法的file对象必须是个目录,该目录必须存在。
        for(String name:names)
        {
            System.out.println(name);
        }
    }
    public static void listRootDemo()
    {
        File[] files = File.listRoots();

        for(File f:files)
        {
            System.out.println(f);
            System.out.println(f.length());//返回值为0.
        }
    }
}

练习1:列出给定目录下的所有文件的名称,利用递归调用
练习2:删除指定目录下的含有内容的文件夹。

import java.io.*;
class FileDemo3
{
    public static void main(String args[])
    {

    }

    public static void showDir(File dir)
    {
        System.out.println(dir);
        File[] files = dir.listFiles();
        for(int x=0;x<files.length;x++)
        {
            if(files[x].isDirectory())
            {
                showDir(files[x])
            }else
            {
                System.out.println(files[x]);
            }
        }
    }

    public static void deleteDir(File dir)
    {
        File[] files = dir.listFiles();
        for(int x=0;x<files.length;x++)
        {
            if(files[x].isDirectory())
            {
                deleteDir(files[x])
            }else
            {
                files[x].delete();
            }
        }
        dir.delete();
    }
}

练习3:将一个指定目录下的java文件,写入到一个文件中,创建java文件列表。

import java.io.*;
class FileDemo4
{
    public static void main(String args[])
    {
        File dir = new File("c:\\abd\\dd")

        ArrayList<File> list = new ArrayList<File>();
        fileToList(dir,list);

        File file = new File("d:\\a.txt");
        writeToFile(list,file);
    }


    public static void fileToList(File dir,ArrayList<File> list) throws Exception
    {
        File[] files = dir.listFiles();
        for(File file:files)
        {
            if(file.isDirectory())
            {
                fileToList(file,list);
            }else
            {
                if(file.getName().endsWith(".java"))
                {
                    list.add(file);
                }
            }
        }
    }
    public static void writeToFile(List<File> list,String javaListFile) throws Exception
    {
        BufferedWriter bfw = null;
        try
        {
            bfw = new BufferedWriter(new FileWriter(javaListFile));
            for(File f:list)
            {
                String path = f.getAbsolutePath();
                bfw.write(path);
                bfw.newLine();
                bfw.flush();
            }
        }catch(IOException e)
        {
            throw e;
        }finally
        {
            try
            {
                if(bfw!=null)
                {
                    bfw.close();
                }
            }catch(IOException e1)
            {
                throw e1;
            }
        }
    }
}

小插曲:递归调用的讲解

    public static void sum(int num)//递归求得从1-num的和为多少。
    {
        if(num==1)
        {
            return 1;
        }else
        {
            return num+sum(num-1);
        }
    }

    public static void toBin(int num)//求得一个数的二进制。
    {
        if(num>0)
        {
            toBin(num/2);
            System.out.println(num%2);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值