2018年4月23日JAVA

Posted jason111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    }
}

 

以上是关于2018年4月23日JAVA的主要内容,如果未能解决你的问题,请参考以下文章

大会 | 「2018年国际自然语言处理及中文计算会议」开始征文!

2018年4月17日JAVA

征文 | 2018年国际自然语言处理及中文计算会议

2018年4月16日JAVA

2018年软考报考地址汇总

text 芝加哥代码2018年4月4日更新