黑马程序员10--File类

来源:互联网 发布:sai软件多大 编辑:程序博客网 时间:2024/06/13 10:48

File类

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

File类的常见方法:
1,创建
   boolean createNewFile();
   boolean mkdir();创建文件夹
   boolean mkdirs();创建多级目录
2,删除
   boolean delete();
   void deleteOnExit();//在程序退出时删除指定文件。
3,判断
   boolean exists(); 文件是否存在。
   isFile()
   isDirectory()
   isHidden()
   isAbsolute()
4,获取信息
   getName():
   getPath():
   getParent():
   String getAbsolutePath():
   File getAbsoluteFile():
   long lastModified():
   long length():

class FileDemo 
{
    public static void main(String[] args) throws IOException
    {
        method_5();
    }

    public static void method_5()
    {
        File f1 = new File("c:\\test.java");
        File f2 = new File("c:\\hahaha.java");

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

    public static void method_4()
    {
        File f = new File("abc\\a.txt");

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

        //该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null
        //如果相对路径中有上一层目录那么该目录就是返回结果。
       sop("parent :"+f.getParent());        
    }

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

//        f.createNewFile();
        
        f.mkdir();

        //记住在判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在。
        //通过exists()判断
        sop("dir:"+f.isDirectory());
        sop("file:"+f.isFile());
        sop(""+f.isAbsolute());
    }
    
    public static void method_2()
    {
        File f = new File("FileDemo.java");
        //sop("execute:"+f.canExecute());
        sop("exists:"+f.exists());

        //创建文件夹,mkdir只能创建一级目录
        File dir = new File("abc");
        sop("mkdir:"+dir.mkdir());

        File dir2 = new File("abc\\a\\b\\c");

        sop("mkdirs:"+dir2.mkdirs());
    }

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

        //sop("create:"+f.createNewFile());

        sop("delete:"+f.delete());

    }


    //创建file对象
    public static void consMethod()
    {
        //将a.txt封装成file对象。可以将已有的和未出现的文件或者文件夹封装成对象
        File f1 = new File("a.txt");

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

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

        File f4 = new File("c"+File.separator+"abc"+File.separator+"d.txt");

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

    }

    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}


文件夹操作
class  FileDemo2
{
    public static void main(String[] args) 
    {
        listFiles();
    }

    public static void listFiles()
    {
        File dir = new File("c:\\Javawork\\");
        File[] files = dir.listFiles();
        for (File f:files)
        {
            System.out.println(f.getName()+":"+f.length());
        }
    }
    
    //带过滤条件 ,以".java"结尾
    public static void listFilter()
    {
        File f = new File("c:\\Javawork\\20");
        String[] names = f.list(new FilenameFilter(){
          public boolean accept(File f,String name){
            return name.endsWith(".java");
          }
        });

        System.out.println("len:"+names.length);
        for (String name:names )
        {
            System.out.println(name);
        }
    }
    public static void listDemo()
    {
        File f = new File("c:\\");

        //调用list方法的file对象必须是封装了一个目录
        //而且该目录必须存在
        String[] names = f.list();
        for (String name:names )
        {
            System.out.println(name);
        }
    }

    public static void listRootsDemo()
    {
        File[] files = File.listRoots();

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

//递归显示文件夹下文件和文件夹
class  FileDemo3
{
    public static void main(String[] args) 
    {
        showDir(new File("C:\\Downloads"),0);
    }

    public static String getLevel(int level)
    {
        StringBuilder sb = new StringBuilder();
        sb.append("|--");
        for(int i=0;i<level;i++)
        {
            sb.insert(0," ");
        }
        return sb.toString();
    }

    //递归显示文件夹下文件和文件夹
    public static void showDir(File dir,int level)
    {
        System.out.println(getLevel(level)+dir.getName());

        level++;
        File[] files = dir.listFiles();
        for(int i=0;i<files.length;i++)
        {
            //System.out.println(dir);
            if(files[i].isDirectory())
                showDir(files[i],level);
            else
            System.out.println(getLevel(level)+files[i]);
        }
    }
}

//递归删除带内容的目录
class RemoveDir 
{
    public static void main(String[] args) 
    {
        removeDir(new File("C:\\D"));
    }

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

        System.out.println("dir:"+dir+":"+dir.delete());
    }
}


Properties 是hashtable的子类
也就是说它具备map集合的特点。而且它里面存储的键值对是字符串。
是集合中和IO技术相结合的集合容器
该对象的特点:可以用于键值对形式的配置文件

getProperty(String key)  //用指定的键在此属性列表中搜索属性。
setProperty(String key, String value) // 调用 Hashtable 的方法 put。
list(PrintStream out) // 将属性列表输出到指定的输出流。 
list(PrintWriter out) // 将属性列表输出到指定的输出流。 
load(InputStream inStream) //从输入流中读取属性列表(键和元素对)。 
load(Reader reader) //按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。 
store(OutputStream out, String comments) //以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。 
propertyNames() //   返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。 

class  PropertiesDemo
{
    public static void main(String[] args)  throws IOException
    {
        loadDemo();
    }

    public static void loadDemo() throws IOException
    {
        FileInputStream fis = new FileInputStream("info.txt");
        Properties prop = new Properties();

        prop.load(fis);

        prop.setProperty("wangwu2","18");

        FileOutputStream fos = new FileOutputStream("info.txt");

        prop.store(fos,"haha");
        prop.list(System.out);
        
    }

    //演示,如何将流中的数据存储到集合中
    //想要将info.txt中键值数据存到集合中进行操作。

    /*
    1.用一个流和info.txt文件关联
    2.读取一行数据,将该行数据用”=”进行切割。
    3.等号左边作为键,右边作为值。存入到Properties集合中即可。
    */


    public static void method_1() throws IOException
    {
        BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));

        String line=null;
        Properties prop = new Properties();
        String[] arr=null;

        while ((line=bufr.readLine())!=null)
        {
            arr = line.split("=");
            prop.setProperty(arr[0],arr[1]);
        }

        bufr.close();

        System.out.println(prop);
    }

    //设置和获取元素
    public static void setAndGet()
    {
        Properties prop = new Properties();
        prop.setProperty("zhangsan","30");
        prop.setProperty("lisi","39");

        //System.out.println(prop);

        //String value = prop.getProperty("lisi");

        //System.out.println(value);

        prop.setProperty("lisi",89+"");

        Set<String> names = prop.stringPropertyNames();
        for (String s:names )
        {
            System.out.println(s+":"+prop.getProperty(s));
        }
    }
}
0 0