• Java笔记(二十七)……IO流中 File文件对象与Properties类


    File类

    用来将文件或目录封装成对象

    方便对文件或目录信息进行处理

    File对象可以作为参数传递给流进行操作

    File类常用方法

    创建

    boolean
    createNewFile():创建新文件,如果文件存在,返回false

    boolean
    mkdir():创建目录,只能创建一级目录

    boolean
    mkdirs():创建目录,可创建多级目录

    删除

    boolean
    delete():删除文件,如果文件不存在,返回false,如果删除的是目录,需要确保目录是空的

    void
    deleteOnExit():程序结束时删除文件

    判断

    boolean
    exists():判断文件是否存在

    boolean
    isFile():判断是否是一个文件

    boolean
    isDirectory():判断是否是目录

    boolean
    isHidden():判断文件是否隐藏

    boolean
    isAbsolute():判断是否是绝对路径

    boolean
    canExecute():判断文件可否执行

    boolean
    canRead():判断文件是否可读

    boolean
    canWrite():判断文件是否可写

    获取信息

    String
    getName():获取文件名

    String
    getParent():获取文件路径

    String
    getPath():获取封装进对象的路径

    File
    getAbsoluteFile():获取绝对路径文件对象

    String
    getAbsolutePath():获取绝对路径

    long
    lastModified():获取最后修改时间

    long
    length():获取大小

    static File[]
    listRoots():静态方法,获取系统可用根目录

    String[]
    list():获取目录中文件的文件名

    String[]
    list(FilenameFilter filter):过滤文件名并获取

    File类简单应用

    打印.java文件

       1:  
       2:     //打印指定目录中的.java文件
       3:     private static void fileFilter()
       4:     {
       5:         File f = new File("d:\code\java_blog_code");
       6:  
       7:         //FilenameFilter用来设置过滤器
       8:         String[] s = f.list(new FilenameFilter()
       9:         {
      10:             public boolean accept(File dir,String name)
      11:             {
      12:                 if(name.endsWith(".java"))
      13:                     return true;
      14:                 else
      15:                     return false;
      16:             }
      17:         });
      18:  
      19:         for(String ss : s)
      20:         {
      21:             System.out.println(ss);
      22:         }
      23:     }

    打印层级目录文件

       1: //根据层级打印制表符
       2: private static void printLevel(int level)
       3: {
       4:     for(int i = 0 ; i < level ; i ++)
       5:     {
       6:         System.out.print("	");
       7:     }
       8: }
       9:  
      10: //利用递归,分层次打印指定目录的文件
      11: private static void showFiles(File dir,int level)
      12: {
      13:     //打印目录名
      14:     printLevel(level);
      15:     System.out.println(dir.getName());
      16:  
      17:     File[] files = dir.listFiles();
      18:     
      19:     for(File f : files)
      20:     {
      21:         if(f.isDirectory())
      22:             //如果是目录,传入方法进行递归
      23:             showFiles(f,level+1);
      24:         else
      25:         {
      26:             //打印文件列表
      27:             printLevel(level+1);
      28:             System.out.println(f.getName());
      29:         }
      30:     }
      31: }

    Properties类

    文件配置信息专用类,Hashtable的子类,内部存放一些文件属性的键值对信息,如果较复杂信息可使用xml存储,简单键值对使用Properties存取

    Properties常用方法

    String
    getProperty(String key):通过key获取value信息

    void
    load(InputStream inStream):从字节流加载键值对信息

    void
    load(Reader reader):从字符流加载键值对信息

    Object
    setProperty(String key, String value):设置键值对信息

    void
    store(OutputStream out, String comments):将键值对信息导入到字节流

    void
    store(Writer writer, String comments):对键值对信息导入到字符流

    Properties简单应用

    模拟限制程序运行次数

       1: import java.io.*;
       2: import java.util.*;
       3:  
       4: /*
       5: 模拟限制程序运行次数
       6: */
       7: class PropertiesDemo 
       8: {
       9:     public static void main(String[] args) throws IOException
      10:     {
      11:         
      12:         Properties prop = new Properties();
      13:  
      14:         //导入info.txt的字节流信息
      15:         prop.load(new FileInputStream("info.txt"));
      16:         
      17:         //获取程序运行次数
      18:         String times = prop.getProperty("times");
      19:     
      20:         //如果第一次运行,则设置次数为1
      21:         if(times == null)
      22:             prop.setProperty("times","1");
      23:         //如果次数大于5次,则打印缴费信息,退出程序
      24:         else if(times.compareTo("4") > 0)
      25:         {
      26:             System.out.println("times greater than 5!please donate money!");
      27:             System.exit(0);
      28:         }
      29:         //程序在允许运行次数范围内,获取次数,并加1
      30:         else
      31:         {
      32:             prop.setProperty("times",""+(Integer.parseInt(times)+1));
      33:         }
      34:         
      35:         //将设置的新次数写入到info文件中
      36:         prop.store(new FileOutputStream("info.txt"),"times");
      37:         
      38:         //程序主题,可无视
      39:         for(int i = 0 ; i < 10 ; i ++)
      40:         {
      41:             System.out.println("i = "+i);
      42:         }
      43:         
      44:         
      45:     }
      46:  
      47:  
      48: }

  • 相关阅读:
    详细分析MySQL事务日志(redo log和undo log)
    详细分析MySQL的日志(一)
    MySQL/MariaDB中的事务和事务隔离级别
    详细介绍MySQL/MariaDB的锁
    MariaDB/MySQL用户和权限管理
    (MariaDB)开窗函数用法
    翻译:window function(已提交到MariaDB官方手册)
    翻译:group_concat()函数(已提交到MariaDB官方手册)
    (MariaDB/MySQL)之DML(1):数据插入
    (MariaDB/MySQL)MyISAM存储引擎读、写操作的优先级
  • 原文地址:https://www.cnblogs.com/ShawnWithSmallEyes/p/3388121.html
Copyright © 2020-2023  润新知