Properties类

特点:

1、Hashtable的子类,map集合中的方法都可以用;

2、该集合没有泛型,键值都是字符串;

3、是一个可以持久化的属性集,键值可以存到集合中,也可存到持久化的设备上,键值的来源也可是持久化的设备;

4、有和流技术相结合的方法:

代码演示:

public static void main(String[] args) {
        Properties pro=new Properties();
        //存数据
        pro.setProperty("driver", "com.mysql.jdbc.driver");
        pro.setProperty("username", "root");
        pro.setProperty("password", "123456");
        //取数据
        //获取键集
        Set<String> set= pro.stringPropertyNames();
        for(String s:set){
            System.out.println(s+"..."+pro.getProperty(s));
        }
    }


public class Demo02 {
    public static void main(String[] args) throws IOException {
        //从properties文件中读取键值对
        Properties pro=new Properties();
        FileInputStream fis=new FileInputStream("x:\\test\\demo1.properties");
        pro.load(fis);
        fis.close();
        Set<String> set=pro.stringPropertyNames();
        //遍历
        for(String s:set){
            System.out.println(s+"..."+pro.getProperty(s));
        }
    }


    public static void main(String[] args) throws IOException {
        //通过properties向文件中写键值对
        //明确目的地
        FileOutputStream fos=new FileOutputStream("x:\\test\\demo2.properties");
        Properties pro=new Properties();
        pro.setProperty("name", "xuezhiqian");
        pro.setProperty("age", "34");
        pro.store(fos, "");
    }

 

序列化流与反序列化流:

读取对象的操作流ObjectInputStream:反序列化流

写入对象的操作流ObjectOutputStream:序列化流

特点:用于操作对象,可将对象写入到文件中,也可从文件中读取对象

代码演示:

//序列化
public class Demo01 {
    public static void main(String[] args) throws IOException {
        Person p=new Person("张三",18);
        //明确目的地
        FileOutputStream fos=new FileOutputStream("x:\\test\\person.txt");
        //创建序列化流
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        //写入对象
        oos.writeObject(p);
        //释放资源
        oos.close();
    }


瞬态关键字 transient
public class Person implements Serializable{
    private String name;
    private transient int age;//瞬态关键字
    private static final long serialVersionUID=123456789L;
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }

 

//反序列化
public class Demo02 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //明确数据源
        FileInputStream fis=new FileInputStream("x:\\test\\person.txt");
        //创建反序列化对象
        ObjectInputStream ois=new ObjectInputStream(fis);
        //反序列化
        Object obj=ois.readObject();
        Person p=(Person)obj;
        System.out.println(p);
        
        
    }

打印流:(怎么写的怎么打印;不会有IOExecption异常)

字节打印流:PrintStream;

字符打印流:PrintWriter;

方法:void print(String str):输出任意类型的数据

  void println(String str):输出任意类型的数据,自动写入换行操作

代码演示:

public static void main(String[] args) throws IOException {
        //打印流复制
        //明确数据源
        FileReader fr=new FileReader("x:\\test\\test.txt");
        BufferedReader br=new BufferedReader(fr);
        //明确数据目的
        FileWriter fw=new FileWriter("x:\\test\\d\\pig.txt");
        PrintWriter pw=new PrintWriter(fw,true);
        //复制
        String line=null;
        while((line=br.readLine())!=null){
            pw.println(line);
        }
        //释放资源
        br.close();
        pw.close();
    }

commons-IO:

导入jar包

FilenameUtils:用来处理文件

常用方法:

getExtension(String path):获取文件的扩展名

getName():获取文件名

isExtension(String filename,String ext):判断filename是否是ext后缀名

FileUtils:

常用方法:

readFileToString(File file):读取文件内容,返回一个String

writeString(File file,String content):将内容写到field中

 

copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制

 

copyFile(File srcFile,File destFile);文件复制

代码演示:

public class Demo01 {
    public static void main(String[] args) throws IOException {
        //method1();
        method2();
    }
    public static void method1(){
        //获取某文件扩展名
        String name=FilenameUtils.getExtension("x:\\test");
        System.out.println(name);
        //获取某文件名
        String filename=FilenameUtils.getName("x:\\test\\test.txt");
        System.out.println(filename);
        //判断某文件是否以什么为结尾
        boolean flag=FilenameUtils.isExtension("aaa.java", "java");
        System.out.println(flag);
    }
    public static void method2() throws IOException{
        FileUtils.copyDirectoryToDirectory(new File("x:\\test"), new File("c:\\"));
        
    }

}