zoukankan      html  css  js  c++  java
  • File类

    流只能操作具体的数据,但是对文件的大小、创建时间等信息却无法操作。这就有必须使用File类。

    File f1=new file("c:\a.txt");

    名称分隔符也可以使用File.separator,如上例 "c:"+File.separator+"a.txt"

    1.常见的File类的获取信息方法

    public static void getDemo()
    {
         File file=new File("a.txt");
         String name=file.getName();
         String absPath=file.getAbsolutePath();
         String path=file.getPath();
         long len=file.lenght();
         long time=file.lastModified();
    Date date=new Date(time);
    DateFormat dateFormat=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.Long);
    string str_time=dateFormat.format(date);

    string parentDir=file.getParent();//如是相对路径,则当前目录的父目录是null
    //以下输出,略 …… }

    2.创建与删除

            File file=new File("a.txt");

            boolean b=file.createNewFile();

           和输出流不一样的是,如果文件不存在,则创建,如果文件存在,则不创建。

           file.delete();

          注意:file.deleteOnExit()是在退出时删除。

    File类还可操作文件夹。

    File dir=new File("abc");

    boolean b=dir.mkdir();

    当文件或目录不存时,isFile()和isDirectory()均为false,所以最好先判断是否存在。

    3.重命名(有剪切功能,可改变目录)

    File f1=new File("c:\a.txt");

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

    boolean b=f1.renameTo(f2);

    4. 获取系统根目录

    File [] files=File.listRoots();

    for(File file:files)

    {

       System.out.println(file); //输出c:  d:   e:等

    }

    5.获取空间容量

    File file=new File("d:\");

    System.out.println(file.getFreeSpace());  //未用空间容量

    System.out.println(file.getTotalSpace());  //总容量

    System.out.println(file.getUsableSpace()); //已用空间容量

    6.获取文件和目录列表

    public static void  listDemo_1()
    {
        File file =new File("c:\"); //如果是文件或此目录不存在,则会有异常,所以最好加判断
        String[] names=file.list();
        for(String name:names)
        { 
             System.out.println(name);
        }
    }
    
    public static void  listDemo_2()
    {
        File file =new File("c:\"); //如果是文件或此目录不存在,则会有异常,所以最好加判断
        //list()方法可以带过滤器,过滤器的接口为FilenameFilter,它就一个方法accept() ,只要返回真,就取出
        String [] names=dir.list(new FilterByJava());
        for(String name:names)
        { 
             System.out.println(name);
        }
    }
    
    
    /*
       新建一个接口,做个过滤器
    */
    public class FilterByJava implements FilenameFilter
    {
         @Override
          public boolean accept(File dir,String name)
          {
              return name.endsWith(".java"); //取出所有扩展名为.java的文件名
          }
    }

    如果想过滤所有隐藏文件,那么不能用list()方法,因为这个方法只能获取和过滤文件和目录的名称,不能过滤文件的属性。

    只能使用listFiles()方法。它也可以使用过滤器,参考上例。

    删除非空目录

    public static void removeDir(File dir)
    {
            File [] files=dir.listFiles()
            for(File file:files)
            {
                  if (file.isDirectory())
                  {
                       removeDir(file);
                  }
                  else
                  {
                       file.delete();   
                  }
            }
            dir.delete();
    }

    下面看看Map-->Hashtable-->Properties

    Properties集合特点:

    1. 该集合中的键和值都是字符串类型

    2. 集合中的数据可保存到流中或从流中获取

    Properties集合用于操作以键值对形式存在的配置文件。

    存:setProperties(String key,String value)

    取:getProperties(String key)

    实例:Properties集合的存和取

    public static void propertiesDemo()
    {
           //创建一个Properties集合
           Properties prop=new Properties();
          //存储元素
           prop.setProperty("张三",30);
           prop.setProPerty("李四",46);
           //修改
           prop.setProperty("张三",34);
          //取出
           Set<String> names=prop.stringPropertyNames();
           for(String name:names)
           {
                String value=prop.getProperty(name);
                 System.out.println(name+":"+value);
           }
    }

    list(PrintStream p) 一般用于调试Properties集合

    注意:PrintStream流是标准输出流,和System.out一样

    如p.list(System.out);

     如果想把Properties集合存放到文件中,可用store(OutputStream out,String comments)方法

    public static void storeProperties()
    {
          Properties prop=new Properties();
          prop.setProperty("zhangsan","30");  //Properties流中操作中方为ISO编码,会出现乱码
          prop.setProperty("lisi","45");
          FileOutputStream fos=new FileOutputStream("info.txt");
          //将集合数据存储到文件中,使用store方法
          prop.store(fos,"name+age");
          fos.close();
    }

    读集合文件

    Properties prop=new Properties();
    //集合中的数据来自于一个文件,必须要保证该文件中的数据是键值对
    //需要使用到读取流
    FileInputStream fis=new FileInputStream("info.txt");
    //使用load方法
    prop.load(fis);
    System.out.println(prop.list());

    //修改集合文件

    public static void modify()
    {
         //读取文件
         File file=new File("info.txt");
         if (!file.exists())
         {
              file.createNewFile();
         }
         FileReader fr=new FileReader("info.txt");
         //创建集合
         Properties prop=new Properties();
         //读文件
          prop.load(fr);
         prop.setProperty("wangwu","16");
         //写文件
         FileWriter fw=new FileWriter(file);
         prop.store(fw,"");
         fw.close();
         fr.close();
    }

    键值对在修改时需要覆盖全文件,不易修改,可以使用XML文件

  • 相关阅读:
    Hive的架构和工作流程
    Hive的定义及搭建
    HBase API操作
    HBase相关概念简介
    HBase shell常用命令
    HBase的简介和搭建
    scrapy useragent
    scrapy settings
    scrapy中的request对象
    python语法
  • 原文地址:https://www.cnblogs.com/jsddj/p/7677822.html
Copyright © 2011-2022 走看看