您的位置:首页 > 职场人生

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

2015-08-15 21:53 417 查看
——- 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);
        }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  File java 黑马程序员