zoukankan      html  css  js  c++  java
  • 2018年4月23日JAVA

    一、Java Properties类

        Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。像Python支持的配置文件是.ini文件,同样,它也有自己读取配置文件的类ConfigParse,方便程序员或用户通过该类的方法来修改.ini配置文件。在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释。

    Properties类继承自Hashtable,如下:

    它提供了几个主要的方法:

    1. getProperty ( String key),用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。

    2. load ( InputStream inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。

    3. setProperty ( String key, String value) ,调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。

    4. store ( OutputStream out, String comments),以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。

    5. clear (),清除所有装载的 键 - 值对。该方法在基类中提供。

    二、Java读取Properties文件

    最常用的还是通过java.lang.Class类的getResourceAsStream(String name)方法来实现,如下可以这样调用:

    InputStream in = getClass().getResourceAsStream("资源Name");作为我们写程序的,用此一种足够。

    或者下面这种也常用:

    InputStream in = new BufferedInputStream(new FileInputStream(filepath));

    三、课堂练习

    1.

    package day042301;
    import java.util.Properties;
    import java.util.Set;
    public class demo1 {
        public static void main(String[] args) {
        Properties pro=new Properties();
        pro.setProperty("a", "1");
        pro.setProperty("b", "2");
        pro.setProperty("c", "3");
        pro.setProperty("d", "4");
        String vl=pro.getProperty("d");
        System.out.println(vl);
        //遍历集合,获取到装有键值的set集合
        Set<String> s=pro.stringPropertyNames();
        for(String str:s){
            //通过遍历键获取对应的值
            String key=str;
            String value=pro.getProperty(key);
            System.out.println(key+"..."+value);
        }
        }
    }

    运行结果

    2.

    package day042301;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.Properties;
    import java.util.Set;
    
    public class demo2 {
    
        public static void main(String[] args) throws IOException {
            input();
    
        }
    public static void output() throws IOException{
        Properties pro=new Properties();
        pro.setProperty("李宝林一号", "吃外卖");
        pro.setProperty("李宝林二号", "吃大餐");
        pro.setProperty("李宝林三号", "吃零食");
        FileWriter fw=new FileWriter("d:\test\demo.properties");
        pro.store(fw, "");
        fw.close();
    }
    //输出
    public static void input() throws IOException{
        Properties pro=new Properties();
        FileReader fr=new FileReader("d:\test\demo.properties");
        pro.load(fr);
        fr.close();
        Set<String> set=pro.stringPropertyNames();
        Iterator<String> it=set.iterator();
        while(it.hasNext()){
            String key=it.next();
            String value=pro.getProperty(key);
            System.out.println(key+"..."+value);
        }
    }
    }

    运行结果

    3.

    package day042303;
    import java.io.File;
    import java.io.IOException;
    import org.apache.commons.io.FileUtils;
    import org.apache.commons.io.FilenameUtils;
    
    public class fileutildemo {
    
        public static void main(String[] args) throws IOException {
            filenameutil();//获取扩展名
        }
        public static void filenameutil() throws IOException{
            FilenameUtils fnu=new FilenameUtils();
            //获取扩展名
            String name1=fnu.getExtension("d:\test\person.txt");
            //获取文件名
            String name2=fnu.getName("d:\test\person.txt");
            //判断后缀名
            boolean flag=fnu.isExtension("d:\test\person.txt", "txt");    
            System.out.println(name1+" "+name2+" "+flag);
            //读取文件内容
            FileUtils fu=new FileUtils();
            String content=fu.readFileToString(new File("d:\test\person.txt"));
            System.out.println(content);
            //fu.writeStringToFile(new File("d:\test\today.txt"), "今天下雨了");
            //fu.copyDirectoryToDirectory(new File("d:\test"), new File("d:\java"));
            //复制文件
            fu.copyFile(new File("d:\test\today.txt"), new File("d:\java\ttttt.txt"));
        }
    
    }

    运行结果

    4.

    package day042303;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    /*打印流
     * 1.printwriter(file,output,string,writer)(自动刷新),灵活性更强
     * *2.printstream
     * 特点:
     * 1.该流不负责数据源,只负责数据目的
     *2.为其他输出流添加功能
     *3.永远不抛IOException
     */
    public class printdemo {
    
        public static void main(String[] args) throws IOException {
            copy();
    
        }
        public static void method1() throws FileNotFoundException{
            File file=new File("d:\test\person.txt");
            PrintWriter pw=new PrintWriter(file);
            pw.println("100");
            pw.flush();
            pw.write(100);
            pw.close();
        }
        public static void method2(){
            int[] arr={1};
            System.out.println(arr);
            char[] ch={'a','b','c'};
            System.out.println(ch);
        }
        public static void method3() throws FileNotFoundException{
            //打印流的自动刷新功能
            //条件:1.你的输出数据目的必须是流对象
            //2.必须调用的方法:println,printf,format其中一个
            File file=new File("d:\test\person.txt");
            FileOutputStream fos=new FileOutputStream(file);
            PrintWriter pw=new PrintWriter(fos,true);
            pw.println("五一去哪玩");
            pw.println("第一天去哪玩");
            pw.println("写代码啊");
            pw.close();
        }
    //复制
        public static void copy() throws IOException{
            //读取数据 用budderedreader+filereader
            //写入目的地:printwriter+println自动刷新功能
            BufferedReader br=new BufferedReader(new FileReader("d:\test\person.txt"));
            PrintWriter pw=new PrintWriter(new FileWriter("d:\test\aaaa\hello.txt"),true);
            String line=null;
            while((line=br.readLine())!=null){
                pw.println(line);
            }
            pw.close();
            br.close();
        }
    }
  • 相关阅读:
    Host文件修改后无效的解决办法
    spring-framework-reference阅读笔记(一)
    利用instsrv和srvany来手动安装服务
    JSP
    DHTML (一)
    Java 多线程 (概述)
    Java IO (三)
    Java IO(二)
    Java 递归
    Java IO File (一)
  • 原文地址:https://www.cnblogs.com/jason111/p/8919744.html
Copyright © 2011-2022 走看看