Java 总结 1125/1126

IO流:
1)FileOutputStream FileInputStream 字节流

2)BufferdeOutputStream BufferdeInputStream 字节缓冲流 
字节缓冲流只提供一种缓冲区,针对IO进行实现数据的传输实际上是根据底层基本流实现的
所以不能直接对文件进行操作

3)OutputStreamWriter InputStreamReader 字符流
字符流: 字节流+编码格式(默认GBK)
构造方法: public OutputStreamWriter(OutputStream out) ;
Java提供了书写更简单的类
FileWriter(String FileName) FileReader 

4)BufferedWriter(Writer out) BufferedReader
注意: 使用字节缓冲流和字符流输入的时候,每次输入完要使用flush()方法来刷新缓冲区
BufferedWriter:
public void newLine();写入一个换行符
BufferedReader
public String readLine(); 一次读取一行

5)DateOutputStream  DateInputStream 
都属于数据流,可以针对Java基本数据类型的数据进行读写操作
构造方法:
public DataOutputStream(OutputStream out)
对象名.writeByte  ...
对象名.readByte   ...

6)ByteArrayOutputStream ByteArrayIntputStream
内存操作流  针对内存的数据进行操作  程序一结束这些内存中的数据就消失了
特点:针对小文件进行操作
此流对象可以不释放资源

7)PrintStream 字节打印流  PrintWriter 字符打印流
特点: 1)在复制文件的时候,打印流只能输出数据
 2)有自动刷新功能
 3)可以直接针对文本文件进行操作
如果该流的构造方法中的参数是String 或者是File 的时候都可以直接针对文件进行操作
比如:FileInputStream
 FileOutputStream
 FileWriter
 FileReader
构造方法: 
public PrintWriter(String fileName)
public PrintWriter(Writer out,boolean autoFlush)
第二个参数为true,启动启动刷新功能
特有方法: 
public void println(String x):打印字符串,并且终止该行

8)RandomAccessFile 随机访问流
此类的实例支持对随机文件的访问和写入
它不是实际意义上的流 因为他继承Object类
构造方法:
public RandomAccessFile(String name, String mode)
参数一:指定该文件的路径
参数二:指定的一种模式:常用的模式:"rw",这种模式是可以读也可以写

9)SequenceInputStream 合并流
构造方法:
public SequenceInputStream(InputStream s1,InputStream s2)
public SequenceInputStream(Enumeration<? extends InputStream> e)
复制多个文件
Vector集合中的特有功能:
public Enumeration<E> elements()

10)ObjectOutputStream ObjectInputStream 序列化流
ObjectOutputStream中的成员方法:
public final void writeObject(Object obj):将obj对象写入到当前的序列化流中
ObjectInputStream中的成员方法:
public final Object readObject():从当前反序列化流中读取一个对象
NotSerializableException(没有实现序列化接口的异常)

序列化: Serializeable 序列化接口
序列化和反序列化考点:
1)将对象--->流数据或者流数据--->对象,该对象所在的类要实现一个标记接口:serializable 多线程有一个关键字:同步机制(synchronized)
2)序列化和反序列化生产的版本Id不一致的时候,会出现异常,所以使用生产随机ID或者固定ID解决
3)transient:修饰的变量不会被序列化...
以上IO流的读取都有两种方式:
1)逐字节(字符)读取
int by =0;
while((by = 字节(字符)对象名.read())!=-1){
System.out.println((char)by);
}
2)按字节(字符)数组读取
byte [] bys = new byte [1024];
int len =0;
while((len = 字节(字符)对象名.read(bys))!=-1){
System.out.println(bys,0,len);
}
缓冲流又称高效流
注意:  当使用read()读完的时候返回的是-1 使用readLine()读完的时候返回的是null!
键盘录入的两个方式:
1)Scanner类
2)IO流:
使用BufferedWriter和BufferedReader替代Scanner和System.out.println
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String str = br.readLine();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(str);
bw.flush();
br.close();
bw.close();
标准输入和输出流
System类中有两个字段:
in:----->InputStream is = System.in ; 
out----->PrintStream ps = System.out ;


Properties集合:

Properties:属性集合类,该类继承自Hashtable<K,V>,该类属于Map集合
Properties 类表示了一个持久的属性集。
Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串(一般情况:它用作配置文件去使用,MySQL或者Oracle中用它做配置文件)
构造方法:
public Properties():创建一个空属性列表
特有方法:
public Object setProperty(String key,String value)
public Set<String> stringPropertyNames():获取当前属性列表中所有的键的集合,键值都是String类型
public String getProperty(String key)用指定的键在此属性列表中搜索属性值

Properties 可保存在流中或从流中加载。
将文件中的数据加载到属性集合中:public void load(Reader reader)
将属性集合中的数据保存到文件中:public void store(Writer writer,String comments)
第二个参数:comments:对当前属性列表 的描述

猜你喜欢

转载自blog.csdn.net/a1003873553/article/details/78681511