黑马程序员----IO流(File类)

来源:互联网 发布:沧州洗浴软件 编辑:程序博客网 时间:2024/05/04 00:24

——- android培训、java培训、期待与您交流! ———-

File类

        用来将文件或者文件夹封装成对象的类,方便对文件与文件夹的属性信息进行操作。
        File对象可以作为参数传递给流的构造函数。
        流对象可以操作文件,(只能操作数据),但是不能操作文件以及文件夹的属性信息。
    
        File类的常见方法:
        1.创建:
                boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false;
                和输出流不一样,输出流对象一建立就会创建文件,如果文件存在,则覆盖。
                boolean mkdir();只能创建一级文件夹;
                boolean mkdirs();创建多级文件夹;
        2.删除:
                boolean delete();//删除失败返回false;
                void deleteOnExit();//在程序退出时删除指定文件;
        3.判断:
                boolean exists();文件是否存在;
                boolean canExecute();是否能执行  
                isFile();//判断是否为文件;
                isDirectory();//判断是否为目录;   
                isHidden();//判断是否是隐藏文件。尽力不要访问系统中被隐藏的文件;
                isAbsolute();//判断文件是否为绝对路径,即使文件不存在也会判断;

               注意:对一个文件判断其是目录还是文件对象的时候,必须先判断这个文件对象封装的内容是否存在。  
        4.获取信息:
                getName();
                getPath();//如果是相对路径,就返回相对路径,如果是绝对路径,就返回绝对路径;
                getParent();//返回文件绝对路径中的父目录(具体地说就是该文件或者文件夹的上一层目录),如果没有明确指定目录(相对路径),则返回的是空null;  
                getAbsolutePath();//无论是相对路径还是绝对路径,都返回绝对路径;
                long lastModified();//返回最后修改时间;
                long length();//返回文件大小;
        5.重命名:
                renameTo();    //类似于剪切; 

public class IO_FileMethod_1{    public static void main(String[] args) throws IOException    {        consMethod();        method_1();        method_2();        method_3();        method_4();        method_5();    }        public static void method_1() throws IOException    {                File f=new File("file.txt");                //退出时删除文件:        f.deleteOnExit();                //创建:                sop("create:"+f.createNewFile());                    //删除:        sop("delete:"+f.delete());        }        public static void method_2()    {        File f=new File("file.txt");                //sop("exist:"+f.exists());                //sop("execute:"+f.canExecute());                //创建一个文件夹:        File dir=new File("d:\\abc\\v\\f\\d\\d");        //sop("mkdir:"+dir.mkdir());//mkdir()只能创建一级目录;        sop("mkdirs:"+dir.mkdirs());    }        public static void method_3()    {        File f=new File("d:\\file.txt");        //对一个文件判断其是目录还是文件对象的时候,必须先判断这个文件对象封装的内容是否存在。        //sop("create:"+f.createNewFile());        //sop("mkdirs:"+f.mkdirs());                sop("exist:"+f.exists());                sop("dir:"+f.isDirectory());        sop("file:"+f.isFile());                sop(f.isAbsolute());//绝对路径;    }        public static void method_4()    {        File f=new File("d:\\get.txt");        sop("path--"+f.getPath());        sop("abspath--"+f.getAbsolutePath());        sop("parent--"+f.getParent());        sop("time--"+f.lastModified());//返回最后修改时间;        sop("length--"+f.length());//返回文件大小;    }        public static void method_5()    {        File f1=new File("c:\\Test.java");        File f2=new File("c:\\haha.java");                sop("rename:"+f1.renameTo(f2));    }        public static void consMethod()//构造方法演示;    {        //创建File对象:        File f1=new File("c:\\0.java");//将文件封装成对象,可以将已有的或者未出现的文件或者文件夹封装成对象;;                //参数分开传递:        File f2=new File("c:\\abc","b.txt");//左边指定的是父目录,右边指定的是文件名;            File d=new File("c:\\abc");        File f3=new File(d,"c.txt");//与f2其实是一样的。                sop("f1"+f1);        sop("f2"+f2);        sop("f3"+f3);                //File f4=new File("d:\\abc\\zzz\\a.txt");        File f4=new File("d:"+File.separator+"abc"+File.separator+"zzz"+File.separator+"\\a.txt");//目录分隔符,跨平台性;    }        public static void sop(Object obj)    {        System.out.println(obj);    }}

list():

    打印指定目录下的所有文件,包含隐藏文件,该目录必须存在。
    当list所属的对象是一个文件的时候,返回的数组为null,数组长度为0;会发生空指针异常。
listRoot():
    列出盘符;
练习:打印所有的.java文件。

FilenameFilter类

        实现此接口的类实例可以用于过滤器文件名。
        list方法和listFiles方法的区别:
                list方法返回的是当前目录下的文件以及文件夹名称;
                listFiles方法返回的是当前目录下的文件以及文件夹对象,对象可以通过getName获取名称,可以通过length获取大小,可以通过getPath获取路径.....
    开发的时候用listFiles方法; 
    能不能拿当前目录下的子目录中的文件呢?
public class IO_2_FileMethod_2 {    public static void main(String[] args)    {        listRootDemo();        listDemo();        System.out.println("-----------------------");        filenameFilter();        System.out.println("-----------------------");        filenameFilter_2();            }    //用listFile方法实现:    public static void filenameFilter_2()    {        File dir=new File("c:\\");        File[] files=dir.listFiles();                for(File f:files)        {            System.out.println(f.getName()+":"+f.length());        }    }    public static void filenameFilter()    {        File dir=new File("e:\\JAVA\\javastudy");        String[] arr=dir.list(new FilenameFilter()        {            public boolean accept(File dir,String name)            {                //System.out.println("dir:"+dir+"      name:"+name);                                //扩展名是.java的文件:                /*                if(name.endsWith(".java"))                {                    return true;                }                else                    return false;//通过返回值来判断要过滤的文件;true表示文件符合条件,false表示文件不符合条件而被过滤掉了;                */                return name.endsWith(".java");            }        });                System.out.println("len:"+arr.length);                for(String name:arr)        {            System.out.println(name);        }    }    public static void  listDemo()    {        File f=new File("c:\\");                String[] names=f.list();        for(String name:names)        {            System.out.println(name);        }    }    public static void listRootDemo()    {        File[] files=File.listRoots();//列出盘符;                for(File f:files)        {            System.out.println(f);        }    }}

0 0