Properties类、序列化流与反序列化流、打印流、commons-IO
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:\\"));
    }
}
Properties类、序列化流与反序列化流、打印流、commons-IO的更多相关文章
- IO—》Properties类&序列化流与反序列化流
		Properties类 介绍:Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. Properties类特点: ... 
- Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)
		一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ... 
- File类与常用IO流第十一章——打印流
		第十一章.打印流 概述:java.io.PrintStream extends OutputStream,为其他输出流添加了功能,使题目能够方便的打印各种数据值表示形式. 特点: 只负责数据的输出,不 ... 
- JAVA学习第五十四课 — IO流(八)打印流 & 序列流
		一.综合练习-文件清单列表 获取指定文件夹下,指定扩展名的文件(含子文件夹),并将这些文件的绝对路径写到一个文本文件里.也就是建立一个指定扩展名的文件列表 1.深度遍历 2.过滤器->容器 3. ... 
- Java基础知识强化之IO流笔记60:打印流 之 改进复制文本文件的案例
		1. 使用打印流改进复制文本文件的案例 2. 代码示例: package cn.itcast_03; import java.io.BufferedReader; import java.io.Buf ... 
- Java基础知识强化之IO流笔记59:打印流
		1. 打印流 (1)分类: • 字节打印流 PrintStream • 字符打印流 PrintWriter (2)打印流的特点: • 只能写数据,不能读数据 • 只能操作目的地,不能操作数据源 ... 
- IO流_PrintWriter(字符打印流)与PrintStream(字节打印流)
		PrintStream: 1.提供了打印方法可以对多种数据类型值进行打印,并保持数据的表示形式 2.它不抛IOException 3.构造函数接受三种类型的值: 字符串路径 File对象 ... 
- Java第三阶段学习(五、流的操作规律、Properties流、序列化流与反序列化流、打印流、commons-IO jar包)
		一.流的操作规律 四个明确: 明确一:明确要操作的数据是数据源还是数据目的地 源:InputStream Reader 目的地:OutputStream Writer 先根据需求明确是要读还是写 ... 
- Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
		1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ... 
- Java IO(Properties/对象序列化/打印流/commons-io)
		Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ... 
随机推荐
- HTTP Basic Authentication认证(Web API)
			当下最流行的Web Api 接口认证方式 HTTP Basic Authentication: http://smalltalllong.iteye.com/blog/912046 什么是HTTP B ... 
- c#Md5 32位加密结果少了两个0的原因
			今天碰到一个问题, md5加密之后与网站上md5加密少了两位, 仔细看区别是少了两个零 E1ADC3949BA59ABBE56E057F2F883E 我的md5 E10ADC3949BA59AB ... 
- centos7 搭建vnc服务
- POJ 3469.Dual Core CPU 最大流dinic算法模板
			Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 24830 Accepted: 10756 ... 
- Python之路(第五篇) Python基本数据类型集合、格式化、函数
			一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ... 
- Redis (非关系型数据库) 数据类型 之 String类型
			Redis 一个内存数据库,通过 Key-Value 键值对的的方式存储数据.由于 Redis 的数据都存储在内存中,所以访问速度非常快,因此 Redis 大量用于缓存系统,存储热点数据,可以极大的提 ... 
- MongoDB相关记录
			win10中zip安装 下载地址:http://dl.mongodb.org/dl/win32/x86_64 首先解压至某文件夹, 使用管理员权限打开cmd或者powershell, 进入指定目录中的 ... 
- 【转载】 了解实时媒体的播放(RTP/RTCP 和 RTSP)
			http://blog.csdn.net/span76/article/details/12913307 离线媒体只是用 Http协议去读取服务器端文件而已,而对于实时直播如何实现, 这里就要用到 R ... 
- @Valid基于hibernate
			第一步:添加依赖: <!--jsr 303--> <dependency> <groupId>javax.validation</groupId> &l ... 
- 2018.11.01 bzoj4872: [Shoi2017]分手是祝愿(期望dp)
			传送门 一道不错的题. 考虑n==kn==kn==k的时候怎么做. 显然应该从nnn到111如果灯是开着的就把它关掉这样是最优的. 不然如果乱关的话会互相影响肯定不如这种优. 于是就可以定义状态f[i ... 
