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();
    }
}

原文地址:https://www.cnblogs.com/jason111/p/8919744.html

时间: 2024-11-08 18:31:06

2018年4月23日JAVA的相关文章

2015年5月23日Java基础知识

Java基础 1,继承(extends):可以理解成子类对父类除了private方法之外的变量和方法的一种copy: 2,覆盖(Override):子类重写父类的方法,注意: (1)子方法的参数必须与父方法的保持一致: (2)子类方法的修饰符的范围必须要大于父类的,比如说父类的是public子类的必须是public: 3,多态:父对象 obj = new 子对象();其中obj只能调用从父类继承的方法: 4,抽象类(abstract):没有具体方法体:接口:可以理解成高级的抽象类,其中的方法全部

2018年3月26日JAVA

一.什么是面向对象? 现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类.书桌.计算机.高楼大厦等.人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的.通常都会将对象划分为两个部分,即动态部分与静态部分.静态部分,顾名思义就是不能动的部分,这个部分被称为"属性",任何对象都会具备其自身属性,如一个人,它包括高矮.胖瘦.性别.年龄等属性.然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣.微笑.说话.行走,这些是这个

ACM训练小结-柳志轩-2018年6月23日

今天题目情况如下:    D题:SG函数相关.    相关知识忘光...已复习.    E题:丧心病狂的模拟题目.    F题:树分块+容斥.    想到了树上莫队,但是糟糕的是不会O(1)/O(logn)转移,gg.使用容斥来转移,很好,会找相关题目练习.    H题:并查集+最长回文子序列.    看错数据范围+脑子懵以为不可写,事实上是个简单题目.    I题:n*m<=1e5,O(n^2m)的复杂度,很有趣的思路.    J题:点双连通分量+讨论.            教训:    1

七周二次课(1月23日) 10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包

七周二次课(1月23日)10.6 监控io性能10.7 free命令10.8 ps命令10.9 查看网络状态10.10 linux下抓包 =====================================================================================================================================================================================

2014年4月23日 10:22:08

step 1 : 做tcp网络编程,要解析一批批的数据,可是数据是通过Socket连接的InputStream一次次读取的,读取到的不是需要转换的对象,而是要直接根据字节流和协议来生成自己的数据对象. 按照之前的编程思维,总是请求然后响应,当然Socket也是请求和响应,不过与单纯的请求响应是不同的. 这里Socket连接往往是要保持住的,也就是长连接,然后设置一个缓冲区,网络流不断的追加到缓冲区.然后后台去解析缓冲区的字节流. http://cuisuqiang.iteye.com/blog/

2016年01月MVP开始申请了~[截止时间:10月23日]

51CTO与微软中国合作长期为用户提供申请"微软最有价值专家"的平台希望有兴趣.资历的朋友以及正在朝这个方向努力的朋友能够积极参与只要您想参与我们将为您向微软推荐 微软最有价值专家MVP一年评选4次分别为每年的1月.4月.7月.10月.2016年1月的MVP申请截止时间是2015年10月23日. 申请MVP的午饭请下载2016年1月MVP申请表填好后发送到[email protected].我们会在每次MVP申请开始时把用户提交的申请表格推荐到微软中国相关部门 [调整说明]目前的奖励类

2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs

2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs 经典语录: 实际实验搭建:前提 是要保证 一个 /data目录不和根分区在同一个磁盘!1.centos7安装glusterfs参考链接:https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart#To Use the RPMs from Storage SIG, you need to install the cento

政府工作报告-2018年3月5日在第十三届全国人民代表大会第一次会议上李克强总理所做报告

政府工作报告--2018年3月5日在第十三届全国人民代表大会第一次会议上国务院总理 李总理 各位代表: 现在,我代表国务院,向大会报告过去五年政府工作,对今年工作提出建议,请予审议,并请全国政协委员提出意见. 一.过去五年工作回顾 第十二届全国人民代表大会第一次会议以来的五年,是我国发展进程中极不平凡的五年.面对极其错综复杂的国内外形势,以习主席同志为核心的党中央团结带领全国各族人民砥砺前行,统筹推进"五位一体"总体布局,协调推进"四个全面"战略布局,改革开放和社会

软考中高项学员:2016年3月23日作业

软考中高项学员:2016年3月23日作业 一.项目进度管理1.进度管理包括哪六个过程?2.什么是滚动式规划?3.什么是控制账户.规划组合?4.请说明FS.FF.SS.SF的含义.5.虚活动的含义?6.三种依赖关系是哪三种?7.活动资源估算的方法.工具和技术?(记)8.活动历时估算的方法.工具和技术?(记)9.何时可以用类比估算?10.参数估算的含义?11.三点估算公式?标准差计算公式?正负一倍的标准差情况下,概率是多少?2倍的呢?3倍的呢?12.后备分析中,应急时间=时间储备=缓冲时间吗?13.