课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > IO流:Properties
  • IO流:Properties

    发布:昆明Java培训      来源:达内新闻      时间:2016-10-19

  • 昆明达内Java培训的老师今天给大家讲Properties。

    * properties继承自hashtable

    *特点:

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

    * 2.集合中的数据可以保存在流中,或者从流获取

    * 3.map+io=Properties

    *通常该集合用于操作以键值对形式存在的配置文件

    *配置信息:键值对xml数据库

    private static void propertiesDemo_5() throws IOException {

    //读取这个文件

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

    if(!file.exists()){

    file.createNewFile();

    }

    FileReader fr=new FileReader("ifo.txt");

    //创建集合存储配置信息

    Properties prop =new Properties();

    //将流中信息存储在集合中

    prop.load(fr);

    //添加属性

    prop.setProperty("zhaoliu","52");

    FileWriter fw =new FileWriter(file);

    //持久化

    prop.store(fw, "comment");

    //在控制台打印

    prop.list(System.out); //方法:public void list(PrintStream out)

    fw.close();

    fr.close();               

    }

    例一:

    定义功能:获取一个应用程序运行的次数,如果超过五次,如果超过五次给出使用次数已到请注册的提示。并不要运行程序。

    思路:

    * 1.应该有计数器

    *每次程序启动都需要计数一次,并且是在原有的次数上进行计数

    * 2.计数器就是一个变量。计数器不许在内存并进行运算

    *而我们需要多次启动同一个应用程序,使用的是同一个计数器

    *这就需要计数器的生命周期变长,从内存存储到硬盘文件中

    * 3.首先,程序启动时,应该先访问这个用于记录计数器的信息的配置文件

    *获取上一次计数器次数。并进行使用此时的判断

    *其次,对次数进行自增,并自增后的次数重新存储到配置文件中

    * 4.文件中的信息该如何进行存储并体现

    *直接存储次数可以,但是不明确该数据的含义。所以起名字变得很总要

    *这就有了名字和值的对应,所以可以使用键值对

    *可是映射关系map集合搞定,又要读取硬盘上的数据,所有map+io=Properties

    public class PropertiesTest {

    public static void main(String[] args) throws IOException {   

    //将配置文件封装成File对象

    File config=new File("count.properties");

    if(!config.exists()){

    config.createNewFile();

    }

    FileInputStream fis=new FileInputStream(config);

    Properties prop=new Properties();

    prop.load(fis);

    //从集合中通过键获取次数

    String value =prop.getProperty("time");

    //定义计数器。记录获取到的次数

    int count=0;

    if(value!=null){

    count=Integer.parseInt(value);

    if(count>=6){

    throw new RuntimeException("使用次数已到,请注册,给钱!");               

    }

    }           

    count++;

    //将改变后的次数重新存储到集合中

    prop.setProperty("time", String.valueOf(count));

    FileOutputStream fos=new FileOutputStream(config);

    prop.store(fos,"count");

    fos.close();

    fis.close();                                   

    }       

    }       

    例二:

    需求:获取指定目录下,指定扩展名的文件(包含子目录中的),这些文件的绝对路径写入到一个文本文件中。

    思路:

    * 1.必须进行深度遍历

    * 2.要在遍历的过程中进行过滤。将符合条件的内容都存储到容器中

    * 3.对容器中的内容进行遍历并将绝对路径写入到文件中

    public class Test {

    public static void main(String[] args) throws IOException {

    File dir=new File("E:\\JAVA\\JAVA练习");

    FilenameFilter filter =new FilenameFilter(){

    @Override

    public boolean accept(File dir, String name) {

    return ame.endsWith(".java");

    }

    };

    List<File> list =new ArrayList<File>();

    getFiles(dir,filter,list);

    File destFile =new File("javalist.txt");

    writeToFile(list,destFile);

    }

    public static void getFiles(File dir,FilenameFilter filter,List<File> list){

    File[] files=dir.listFiles();

    for (File file : files) {

    if(file.isDirectory()){

    getFiles(file,filter,list);//递归

    }

    else

    {

    //对遍历到的文件进行过滤器的过滤

    //将符合条件File对象存储到List集合中               

    if(filter.accept(dir,file.getName())){

    list.add(file);

    }

    }

    }

    }

    public static void writeToFile(List<File> list,File destFile) throws IOException{

    BufferedWriter bufw=new BufferedWriter(new FileWriter(destFile));

    for (File file : list) {

    bufw.write(file.getAbsolutePath());

    bufw.newLine();

    bufw.flush();

    }

    }   

    }

    了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:IO流之文件的递归

下一篇:IO流:打印流PrintStream和PrintWriter

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56