Java IO(Properties/对象序列化/打印流/commons-io)
Java IO(Properties/对象序列化/打印流/commons-io)
Properties
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串
主要方法
setProperty等同与Map接口中的put , setProperty(String key, String value)
通过键获取值, getProperty(String key)
load() 加载配置文件, 加载完毕以后可以通过 getProperty(String key) 取出对应的值
构造方法
- load(InputStream in) - load(Reader r)
示例
Properties pro = new Properties();
FileReader fr = new FileReader("c:\\pro.properties");
//调用集合的方法load,传递字符输入流
pro.load(fr);
String name = pro.getProperty("name");
fr.close();
System.out.println(pro);store() 将Properties中的键值对写入到文件中保存
构造方法
- store(OutputStream out,String common) - store(Writer w,String common)
示例
Properties pro = new Properties();
pro.setProperty("name", "zhangsan");
pro.setProperty("age", "31");
pro.setProperty("email", "123456789@163.com");
FileWriter fw = new FileWriter("c:\\pro.properties");
//键值对,存回文件,使用集合的方法store传递字符输出流
pro.store(fw, ""); // 后面一个为注释
fw.close();
对象的序列化与反序列化
序列化为将对象的信息存储到文件中,反序列化为将文件存储的对象信息读取出来.
ObjectOutputStream(对象序列化)
构造方法
- ObjectOutputStream(OutputStream out)
主要方法
- writeObject(Object obj)写出对象的方法
示例
    					//创建字节输出流,封装文件
					FileOutputStream fos = new FileOutputStream("c:\\person.txt");
					//创建写出对象的序列化流的对象,构造方法传递字节输出流
					ObjectOutputStream oos = new ObjectOutputStream(fos);
					Person p = new Person("lisi",25);
					//调用序列化流的方法writeObject,写出对象
					oos.writeObject(p);
					oos.close();
ObjectInputStream(对象反序列化)
构造方法
- ObjectInputStream(InputStream in)   // 传递任意的字节输入流,输入流封装文件,必须是序列化的文件
主要方法
- Object readObject()  读取对象 , 读取出来的对象为Object
示例
					FileInputStream fis = new FileInputStream("c:\\person.txt");
					//创建反序列化流,构造方法中,传递字节输入流
					ObjectInputStream ois = new ObjectInputStream(fis);
					//调用反序列化流的方法 readObject()读取对象
					Object obj =ois.readObject();
					System.out.println(obj);
					ois.close();
序列化与反序列化过程中注意事项
静态变量不能被序列化 因为序列化是把对象数据进行持久化存储,而静态的东西不属于对象,而属于类
transient(瞬态)关键字,被transient修饰的成员变量不会被序列化
Serializable接口, 需要序列化的类必须实现这个接口才可以被序列化
序列化中的序列号冲突问题, 对象实现Serializable接口接口后,会给对象创建一个serialVersionUID用作标识对象,如果更改了源代码,则这个表示会改变, 在反序列化的时候java会对比文件和类的的标识是否对应,如果不对应就会报错
- 解决方法    :    给类自定义serialVersionUID,   
private static final long serialVersionUID = 1478652478456L; 
- 解决方法    :    给类自定义serialVersionUID,   
 
打印流
只负责输出数据,使它们能够方便地打印各种数据值表示形式.
打印流的分类
PrintStream
PrintWriter
打印流的特点
不负责数据源,只负责数据目的(只提供输操作)
永远不会抛出IOException,但是可能抛出别的异常
两个打印流的方法,完全一致
构造方法,就是打印流的输出目的端
PrintStream构造方法 : 接收File类型,接收字符串文件名,接收字节输出流OutputStream
PrintWriter构造方法 : 接收File类型,接收字符串文件名,接收字节输出流OutputStream, 接收字符输出流Writer
主要方法
- void print(String str): 输出任意类型的数据,       print和println是原样输出,不去对照码表 
- void println(String str): 输出任意类型的数据,自动写入换行操作
- void write()    ;    向文件中写入字节, 方法使用和ava.io.Writer一致
示例
    					File file = new File("c:\\1.txt");
					PrintWriter pw = new PrintWriter(file);
					pw.println(100);   // 100
					pw.write(100);     // b
					pw.close();
打印流开启自动刷新
                                /*
				 * 打印流,可以开启自动刷新功能
				 * 满足2个条件:
				 *   1. 输出的数据目的必须是流对象
				 *       OutputStream  Writer
				 *   2. 必须调用println,printf,format三个方法中的一个,启用自动刷新
				 */
				public static void function_3()throws  IOException{
					//File f = new File("XXX.txt");
					FileOutputStream fos = new FileOutputStream("c:\\5.txt");
					PrintWriter pw = new PrintWriter(fos,true);
					pw.println("i");
					pw.println("love");
					pw.println("java");
					pw.close();
				}
打印流复制文本文件
示例
						BufferedReader bfr = new BufferedReader(new FileReader("c:\\a.txt"));
						PrintWriter pw = new PrintWriter(new FileWriter("d:\\a.txt"),true);
						String line = null;
						while((line = bfr.readLine())!=null){
							pw.println(line);
						}
						pw.close();
						bfr.close();
					}
commons_io工具类
- apache封装的对文件的操作
 
IO工具类FilenameUtils
主要方法
- getExtension(String path):获取文件的扩展名;
- getName():获取文件名;
- isExtension(String fileName,String ext):判断fileName是否是ext后缀
IO工具类FileUtils
主要方法
- readFileToString(File file):读取文件内容,并返回一个String;
- writeStringToFile(File file,String content):将内容content写入到file中;
- copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
- copyFile(File srcFile,File destFile);文件复制
示例
				/*
				 * FileUtils工具类方法
				 * static void copyDirectoryToDirectory(File src,File desc)
				 * 复制文件夹
				 */
				public static void function_3() throws IOException{
					FileUtils.copyDirectoryToDirectory(new File("d:\\demo"), new File("c:\\"));
				}
				/*
				 * FileUtils工具类的方法
				 * static void copyFile(File src,File desc)
				 * 复制文件
				 */
				public static void function_2() throws IOException{
					FileUtils.copyFile(new File("c:\\k.jpg"),new File("d:\\k.jpg"));
				}
				/*
				 * FileUtils工具类的方法
				 * static void writeStringToFile(File src,String date)
				 * 将字符串直接写到文件中
				 */
				public static void function_1() throws IOException{
					FileUtils.writeStringToFile(new File("c:\\b.txt"),"我爱Java编程");
				}
				/*
				 * FileUtils工具类的方法
				 * static String readFileToString(File src)读取文本,返回字符串
				 */
				 public static void function() throws IOException{
					 String s = FileUtils.readFileToString(new File("c:\\a.txt"));
					 System.out.println(s);
				 }
												
											Java IO(Properties/对象序列化/打印流/commons-io)的更多相关文章
- Java学习笔记43(打印流、IO流工具类简单介绍)
		
打印流: 有两个类:PrintStream,PrintWriter类,两个类的方法一致,区别在于构造器 PrintStream:构造方法:接收File类型,接收字符串文件名,接收字节输出流(Outpu ...
 - 16、IO (Properties、序列化流、打印流、CommonsIO)
		
Properties集合的特点 * A: Properties集合的特点 * a: Properties类介绍 * Properties 类表示了一个持久的属性集.Properties 可保存在流中或 ...
 - Java基础-IO流对象之打印流(PrintStream与PrintWriter)
		
Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...
 - 【译】Java中的对象序列化
		
前言 好久没翻译simple java了,睡前来一篇. 译文链接: http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在 ...
 - [Day25]IO(Properties、序列化流、打印流、Commons-IO)
		
1.Properties类-持久的属性集,可保存在流中或从流中加载,属性列表中每个键及其对应值都是一个字符串 1.1 特点 (1)Hashtable的子类,map集合中的方法都可以用 (2)该集合没有 ...
 - Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Properties集合、打印流)
		
1.IO简介 IO(输入输出)通过java.io包下的类和接口来支持,包下包括输入.输出两种IO流,每种输入输出流又可分为字符流和字节流两大类. 2.File类 File类是io包下与平台无关的文件和 ...
 - Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
		
第一讲 File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...
 - Java学习笔记33(IO:打印流,IO流工具类)
		
打印流: 有两个类:PrintStream PrintWriter类,两个类的方法一样,构造方法不一样 PrintStream构造方法:接收File类型,接收字符串文件名,接收字节输出流(Ou ...
 - 每天进步一点点-Java IO操作-Java Serializable(对象序列化)的理解和总结
		
往硬盘文件里写数据 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.在另一端,反序列化将从该流重 ...
 
随机推荐
- 201521123108《Java程序设计》第3周学习总结
			
1. 本章学习总结 2. 书面作业 Q1. 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
 - Java-对象排序
			
在业务逻辑中,我们经常需要对list进行排序,就像下面这样: Collections.sort(l); 如果l中的元素是String类型,你会发现sort方法将使用字母顺序排序.如果l中的元素是Dat ...
 - 社工数据搜索引擎搭建 - Build Social Engineer Evildata Search Engine
			
如何设计搭建一个社工库 从初起设计一个社工库,到现在的Beta,前前后后零零整整花了不下一个月的时间,林林总总记录下来,留给需要之人 泄露数据库格式不一,长相奇葩,因需将用户名.密码.邮箱.哈希等信息 ...
 - 201521123098 《Java程序设计》第9周学习总结
			
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 1. 在catch时需要考虑各个异常的继承关系,存在继承关系时需要先把子类异常的catch放在前面: 2. 当try ...
 - 201521123001《Java程序设计》第11周学习总结
			
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
 - Mysql常用命令大全
			
1.连接Mysql 格式: mysql h主机地址 u用户名 -p用户密码 2.1 创建数据库 命令:create database <数据库名> 例1:建立一个名为xhkdb的数据库 ...
 - Activiti-04-.Spring integration
			
ProcessEngineFactoryBean <beanid="processEngineConfiguration"class="org.activiti.s ...
 - Spring 级联属性
			
Spring 级联属性是当两个bean 关联时 从一个bean 给 另一个bean 赋值 Application xml 配置如下 <bean id="ZhangSan" ...
 - WebService的简单介绍与入门使用
			
WebService是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式 ...
 - [UIKit学习]08.关于自定义控件
			
自定义控件 选用xib用自定义view代码与xib相关联 示例代码 + (instancetype)shopView { return [self shopViewWithShop:nil]; } + ...