黑马程序员10--File类

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值