一.Properties 类(java.util)
     概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,properties集合的key和value都是固定的数据类型(String),该集合提供了一些特有的方法存取值,是唯一一个可以与IO流相结合的集合;

定义:public class Properties extends Hashtable 注: public class Hashtable extends Dictionary implements Map, Cloneable, Serializable 构造方法:Properties():创建一个无默认值的空属性列表

[注: public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
]

构造方法:Properties():创建一个无默认值的空属性列表

常用方法:
         特有方法: public String getProperty(String key){}:用指定的键在此属性列表中搜索属性
                   public Object setProperty(String key, String value){}:调用 Hashtable 的方法 put()向集合中存键值对;
                   public Set<String> stringPropertyNames(){}:返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。
         与IO流结合的方法:
                 public void load(InputStream instream) throws IOException{}:从输入流中读取属性列表(键和元素对)。(文件-->集合)
                 public void load(Reader reader) throws IOException{}:按简单的面向行的格式从输入字符流中读取属性列表(键和元素对). (文件-->集合)
                 public void store(OutputStream out, String comments) throws IOException{}:以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。Comments 是对整个文件的解释说明的话,不能写中文,因为固定使用ISO8859-1的编码,一般直接写""; (集合-->文件)
                 public void store(Writer writer, String comments) throws IOException{}:以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。(集合-->文件)
     注意事项:
             1:一般情况下如果一个文件与properties集合相结合,那么文件的后缀名是:.properties;
             也可以自定义后缀名;如果后缀名是:.properties;那么文件中的内容自动使用ISO8859-1编码;
             如果后缀名是其他的,文件使用工作空间默认的编码;使用load方法,加载数据的时候,注释的内容会被忽略;
             2:与properties集合结合的文件中的数据格式,必须以键值对的形式存在;
     代码演示1:

  1 /*
2 Properties的基本使用:创建/添加/取值/迭代
3 */
4 import java.util.Properties;
5 import java.util.Set;
6 public class PropertiesDemo{
7 public static void main(String[] args){
8 //创建Properties集合对象
9 Properties p = new Properties();
10 //向集合中添加元素
11 p.setProperty("1","Jack");
12 p.setProperty("2","Rose");
13 p.setProperty("3","Smith");
14 //取值
15 String name = p.getProperty("1");
16 System.out.println(name);//Jack
17 //迭代
18 //把键值取出stringPropertyNames(),返回set集合
19 Set<String> keySet = p.stringPropertyNames();
20 for(String s : keySet){
21 System.out.println(s+"===>"+p.getProperty(s));
22 }
23 }
24 }

代码演示2:

  1 /*
2 向Properties集合中添加元素并以字节流的形式存入到硬盘文件(txt,GBK)
3 再读取到集合中
4 */
5 import java.util.Properties;
6 import java.io.FileOutputStream;
7 import java.io.IOException;
8 import java.io.FileInputStream;
9 public class PropertiesDemo02{
10 public static void main(String[] args) throws IOException{
11 //创建Properties集合
12 Properties p = new Properties();
13 //向集合中添加元素
14 p.setProperty("1","Rose");
15 p.setProperty("2","Jack");
16 //创建基本输出字节流
17 FileOutputStream fout = new FileOutputStream("names.txt");//如果不是.properties结尾的文件默认为工作空间的编码格式
18 //存入磁盘
19 p.store(fout,"");
20 //关闭流
21 fout.close();
22
23 //创建基本输入字节流
24 FileInputStream fin = new FileInputStream("names.txt");
25 //读入集合
26 p.load(fin);
27 //关闭流
28 fin.close();
29 System.out.println(p);//{2=Jack, 1=Rose}
30 }
31 }

二.记住四套继承关系:
     字节流两套:
         java.lang.Object--java.io.OutputStream--java.io.FileOutputStream
         java.lang.Object--java.io.InputStream--java.io.FileInputStream
     高效字节流两套:
         java.lang.Object--java.io.OutputStream--java.io.FilterOutputStream--java.io.BufferedOutputStream
         java.lang.Object--java.io.InputStream--java.io.FilterInputStream--java.io.BufferedInputStream
     字符流两套:
         java.lang.Object--java.io.Writer--java.io.OutputStreamWriter (转换流)--java.io.FileWriter
         java.lang.Object--java.io.Reader--java.io.InputStreamReader  (转换流)--java.io.FileReader
     缓冲字符流两套:
         java.lang.Object--java.io.Writer--java.io.BufferedWriter
         java.lang.Object--java.io.Reader--java.io.BufferedReader

三.转换流 
     按照方向,转换流可以分为:
         用于读数据的转换流,字节流-->字符流的桥梁!
         用于写数据的转换流,字符流-->字节流的桥梁!
     Java 中的类:
         OutputStreamWriter(程序-->硬盘 写数据 字符流对象转换成字节流对象)
         InputStreamReader (硬盘-->程序 读数据 将输入的字节流变为字符流)
         两个转换流都属于字符流的范畴;
     作用:可以读或写指定编码的文件!
    
     OutputStreamWriter 有一个直接子类:FileWriter;  Writer--OutputStreamWriter--FileWriter
     InputStreamReader 有一个直接子类:FileReader;    Reader--InputStreamReader--FileReader
     适用场景:
         当不需要考虑编码的时候,建议使用子类;
         如果需要考虑编码的时候,使用父类(OutputStreamWriter/OutputStreamReader 转换流);

四.OutputStreamWriter 类(java.io)
     介绍:OutputStreamWriter 主要用于向硬盘中写指定编码格式的信息;
     定义:public class OutputStreamWriter extends Writer
     构造方法:
             OutputStreamWriter(OutputStream out, String charsetName):创建使用指定字符集的 OutputStreamWriter。
             OutputStreamWriter(OutputStream out):创建使用默认字符编码的 OutputStreamWriter。
     常用方法:
             public void close() throws IOException(){}:关闭流(关闭前先刷新);
             public void flush() throws IOException(){}:刷新流;
             public void write(char[] cbuf, int off, int len){}:写入字符数组的某一部分
             public void write(int c) throws IOException(){}:写入单个字符
               public void write(String str, int off, int len){}:写入字符串的某一部分
             注意:write()方法可以直接写入字符串,但是read()方法不能直接读取,需转成char[]

五.InputStreamReader 类(java.io)
     介绍:InputStreamReader 主要用于从硬盘中读指定编码格式的信息. 构造时可以指定字符集编码
     定义:public class InputStreamReader extends Reader
     构造方法:
         InputStreamReader(InputStream in, String charsetName):创建使用指定字符集的 InputStreamReader。
         InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
     常用方法:
         public void close() throws IOException{}:关闭流
         public int read() throws IOException{}:读取单个字符
         public int read(char[] cbuf,int offset,int length) throws IOException{}:读入字符数组中的某一部分
         回顾:
             String(char[] value, int offset, int count):分配一个新的 String,它包含取自字符数组参数一个子数组的字符
     代码演示:

  1 import java.io.FileInputStream;
2 import java.io.InputStreamReader;
3 import java.io.IOException;
4 import java.io.FileOutputStream;
5 import java.io.OutputStreamWriter;
6 public class StreamDemo02{
7 public static void main(String[] args) throws IOException{
8 //创建字节输出流
9 FileOutputStream out = new FileOutputStream("E:\\JAVAPractice\\IO\\stream.txt");
10 //创建转换流,以UTF-8的编码写入
11 OutputStreamWriter ow = new OutputStreamWriter(out,"UTF-8");
12 //准备写入的内容
13 String s = "我爱APPLE";
14 ow.write(s);
15 ow.close();
16
17 //创建字节输入流
18 FileInputStream in = new FileInputStream("E:\\JAVAPractice\\IO\\stream.txt");
19 //创建转换流,告诉程序应该是什么编码系统
20 InputStreamReader inr = new InputStreamReader(in, "UTF-8");
21 //定义i用来存储读取到的字节码值
22 int i = -1;
23 char[] c = new char[1024];
24 while((i = inr.read(c)) != -1){
25 String str = new String(c,0,i);
26 System.out.print(str);
27 }
28 inr.close();
29 }
30 }

六.打印流
     概述:打印流仅用于向文件中输出内容用,打印流在输出数据的时候,不会抛出IO异常;打印流一共有2个:
         printStream:属于字节流;早期版本;1.0
         printWriter:属于字符流;后来的版本,1.1;
         这两个流的功能几乎是一致;
     特点:
         所见即所得!
     区别:
         1:自动刷新的方式不同;
         2:主要操作的内容不同,printStream主要操作字节数据,printWriter主要操作字符数据;
    
     两套继承关系:
         java.lang.Object--java.io.OutputStream--java.io.FilterOutputStream--java.io.PrintStream
         java.lang.Object--java.io.Writer--java.io.PrintWriter

七.PrintStream (打印流)类(java.io)
     定义:public class PrintStream extends FilterOutputStream implements Appendable, Closeable
     构造方法:
         PrintStream(File file) 创建具有指定文件且不带自动行刷新的新打印流。
         PrintStream(File file, String csn) 创建具有指定文件名称和字符集且不带自动刷新的新打印流。
         -------------------------------------------------------------------------------------------
         PrintStream(OutputStream out) 创建新的打印流。
         PrintStream(OutputStream out, boolean autoFlush) 创建新的打印流,若为true,可自动刷新
         PrintStream(OutputStream out, boolean autoFlush, String encoding) :创建新的打印流。若为true,可自刷新,并指定字符集
         -------------------------------------------------------------------------------------------------------------------
         PrintStream(String fileName):创建具有指定文件名称且不带自动行刷新的新打印流
         PrintStream(String fileName, String csn):创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
         -----------------------------------------------------------------------------------------------------
     常用方法:
         public void print(Object obj):
         public void println():

八.PrintWriter (打印流)类(java.io)
     定义:public class PrintWriter extends Writer
     构造方法:
         PrintWriter(File file):使用指定文件创建不具有自动行刷新的新 PrintWriter。
         PrintWriter(File file, String csn):创建具有指定文件和字符集且不带自动刷行新的新 PrintWriter。
         -------------------------------------------------------------------------------------------
         PrintWriter(OutputStream out):根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。
         PrintWriter(OutputStream out, boolean autoFlush):通过现有的 OutputStream 创建新的 PrintWriter。
         ----------------------------------------------------------------------------------------------
         PrintWriter(String fileName):创建具有指定文件名称且不带自动行刷新的新 PrintWriter。
         PrintWriter(String fileName, String csn):创建具有指定文件名称和字符集且不带自动行刷新的新 PrintWriter。
         -------------------------------------------------------------------------------------------------------
         PrintWriter(Writer out):创建不带自动刷新的新 PrintWriter。
         PrintWriter(Writer out, boolean autoFlush):创建新 PrintWriter。
         ---------------------------------------------------------------------------------------------
     常用方法:同PrintStream

九.序列化和反序列化
     概述:
         序列化:将程序中的对象,保存到硬盘上,这个过程称为序列化;Java 中提供了一个类:ObjectOutputStream,用于序列化;
         反序列化:将硬盘上对象读取到程序中,并形成一个新的java对象,个过程称为反序列化;ObjectInputStream,用于反序列化;

十.ObjectOutputStream 类(java.io) 用于序列化
     概述:
         ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。
         注意事项:
             1:被序列化的对象必须实现Serializable接口;
             2:必须提供属性的getXxx与setXXx方法;
             3:必须有空参数的构造方法;
     定义:public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants
     构造方法:
         ObjectOutputStream(OutputStream out)
     常用方法:
         public final void writeObject(Object obj) throws IOException{}:将指定的对象写入 ObjectOutputStream。
    

十一.ObjectInputStream 类(java.io) 用于反序列化
     概述:ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。
     定义:public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants
     构造方法:
         public ObjectInputStream(InputStream in) throws IOException
     常用方法:
         public final Object readObject()  throws IOException, ClassNotFoundException{}:从 ObjectInputStream 读取对象。调用一次,读一个对象,如果文件中没有下一个对象了,再调用该方法,会抛出异常;
建议:每个文件中只保存一个对象,只读一次;
     反序列化注意事项:
             1:如果一个对象已经序列化了,不能修改java类,否则会报错;解决:手动添加一个属性,定死一个版本号即可;
             2:如果属性不想序列化,可以使用关键字:transient或static;

十二.工具类的使用步骤:
     1:从网上下载对应的zip并解压;
     2:复制核心jar包到工程中;
     3:将jar添加到本地工程;(add to build path)
     4:直接使用核心类,调用方法;

十三.Commons-IO 工具类

工具的核心类:
     FileUtils:主要用于文件与文件夹的IO操作;  
     FileNameUtils:主要用于文件名的操作;

核心jar包:commons-io-2.4.jar

FileUtils 常用方法:(一般均为静态方法,类名直接调用即可)
     public static void copyDirectory(File srcDir, File destDir){}:复制文件夹,(不包含srcDir)(自动递归);
     public static void copyDirectoryToDirectory(File srcDir, File destDir){}:复制文件夹,(包含srcDir)(自动递归);
     public static void copyFile(File srcFile, File destFile){}:复制文件;
     public static String readFileToString(File file){}:将文件的内容读成一个字符串并返回;
     public static void writeStringToFile(File file, String data){}:将字符串写入到指定的文件中;

最新文章

  1. java SE编写图形应用程序
  2. Android——配置文件的保存SharedPreferences进行数据存储
  3. FTS抓包看蓝牙的SDP整个过程
  4. ————————————————————————————杭电ACM————————————————X-POWER————————————————————————————————
  5. Python 函数传递list,传递dict 以及*args和**kargs
  6. Django之CSRF 跨站请求伪造
  7. C#文件上传类,文件流,字节数组等
  8. Asp.Net MVC4 系列--进阶篇之路由 (2)
  9. Linux调整日期时间
  10. create-react-app:reject和不reject(使用react-app-rewired)这2种情况下的antd组件按需引入配置
  11. FI配置步骤清单.枫
  12. ADC相关参数之---分辨率和精度
  13. CF_321_B_NetFlow
  14. Leetcode——Third Maximum Number
  15. EditorGUI控件输入监听
  16. [STL] map,multimap,unordered_map基本用法
  17. Django中的事务(Transaction)管理
  18. Tomcat底层通过全类名创建对象的实现
  19. Spring - SpringIOC容器详解
  20. MVC系列学习(十六)-区域的学习

热门文章

  1. Ubuntu——查看内存和CPU情况
  2. bootstrap 全局样式
  3. win764位安装mysql-5.6
  4. ajax方法data参数用法的总结
  5. POJ 1845-Sumdiv(快速幂取模+整数唯一分解定理+约数和公式+同余模公式)
  6. 315. Count of Smaller Numbers After Self(Fenwick Tree)
  7. 洛谷P1220 关路灯(区间dp)
  8. python接口测试框架遇到的坑(一)excel数字转文本
  9. SpringMVC之DispatcherServlet类
  10. 导出war包