IO、四大父类、IO异常处理、properties

IO、四大父类、IO异常处理、properties

一、IO

1、IO概述
I:input输入(读取)【从硬盘到内存】
O:output输出(写入)【从内存到硬盘】
流:数据(字符、字节)
输入流 输出流
字节流 inputStream outputStream
字符流 reader Writer
2、四大父类
InputStream      字节输入(子类代表 FileInputStream)
OutputStream     字节输出(子类代表 FileOutputStream)
Reader          字符输入(子类代表 FileReader) ->(增强 BufferedReader)
Writer          字符输出(子类代表 FileWriter) ->(增强 BufferedWriter)
3、字节文件和字符文件
A.字节文件:
     采用windows自带记事本打开全是乱码(图片,音乐,视频,安装文件exe等)
B.字符文件:
     采用windows自带记事本打开不是乱码(文本文件...)
C.编码表:
     作用:  根据本地语言环境,将字节数字,转换成为对应语言文字符号
     理解:  字符文件 = 字节文件 + 编码表
     常见编码:
           ASCII       美国信息交换标准代码 
           GBK         汉字内码扩展规范 
           ISO-8859-1  欧洲编码 
           UTF-8       万国码
4、常用方法
1:public void close() :
关闭此输出流并释放与此流相关联的任何系统资源。
应用:fos.close();
2:public void flush() :
刷新此输出流并强制任何缓冲的输出字节被写出。
3:public void write(byte[] b) :
将 b.length字节从指定的字节数组写入此输出流。
应用:byte[] by = { 字节数组元素 }
fos.write( by );
注意:如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCLL码表;如果写的第一个字节是负数,
那么第一个和第二个字节就会组成一个中文显示,系统查询GBK
4:public void write(byte[] b, int off, int len) :
从指定的字节数组写入 len字节,从偏移量 off开始输 出到此输出流。
参数:
int off:开始的索引; int len: 写几个
应用:fos.write( by, 1 , 2 );
5:public abstract void write(int b) :
将指定的字节输出流
5、IO操作步骤
A.创建对象
B.读写数据
C.释放资源

二、四大父类

1、OutputStream方法
A.写数据
     public abstract void write(int b) //写入数字,如果写入到文本文件,由于编码表原因,转换为字符
     public void write(byte[] b)  //写字节数组
     public void write(byte[] b, int off, int len)   //写入字节数组一部分
B.刷新数据
     public void flush()  //字节流不刷新可以进入文件,字符流需要刷新才能进入文件(计算机底层是字节)
C.关闭方法(俗称"释放资源")
     public void close()  //释放资源.包含了刷新功能
2、InputStream方法
A.读数据
     public abstract int read()  //读取一个字节,返回的是字节
     public int read(byte[] b)  //读取一个字节,返回的是字节数组的长度
B.关闭方法(俗称"释放资源")
     public void close()  //释放资源.包含了刷新功能
3、Writer方法
A.基本方法
     与 OutputStream 方法类似.(OutputStream有的Writer也有)
B.额外方法
     public void write(String str)                   //写入字符串
     public void write(String str, int off, int len)  //写入字符串的一部分
4、Reader方法
A.读数据
     public int read()            //读取一个字符,返回的是字符数组对应的数字
     public int read(char[] cbuf)  //读取一个字符,返回的是字符数组的长度
B.关闭方法(俗称"释放资源")
     public void close()  //释放资源.包含了刷新功能
5、数据追加续写和换行
数据追加续写:使用两个参数的构造方法
1:FileOutputStream(String name , boolean append)
创建一个向有指定 name 对象表示的文件中写入数据的输出文件流
new FileOutputStream(“文件路径”,是否写入(true/false))
2:FileOutputStream(File file, boolean append)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流
参数:
String name,File file :写入输的的目的地
boolean append:追加写开关
true:创建对象不会覆盖源文件,会继续在文件的末尾追加写数据
false:创建一个新文件,覆盖源文件
换行:写换行符号
windows系统:\r\n

三、IO异常处理

try ( FileWriter fw = new FileWriter("fw.txt"); ) { 
     // 写出数据
    fw.write("程序员"); //程序员
} catch (IOException e) { 
    e.printStackTrace();
}

四、properties

1、继承关系
public class Properties extends Hashtable<Object,Object> 
 java.util.Properties 继承于 Hashtable ,来表示一个持久的属性集。同时Properties 集合是唯一和IO流相结合的
 集合
 1:可以使用Properties 集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储
 2:可以使用Properties 集合中的方法load,把硬盘中保存的文件(键值对)读取到集合中使用
 Properties 集合是一个双列集合,key和value默认都是字符串

2、特有方法
1:object setProperty (String key , String value)
调用Hashtable 的方法 put
2:String getProperty (String key)
通过key找到value的值,此方法相当于Map集合中的get(key)方法
3:set stringPropertyNames()
返回此属性列表中的键集,其中该键及其对应值是字符串,相当于Map集合中的 keySet 方法
3、使用
Properties po = new Properties();
1:po.setPropertiey("字符串", "字符串")
向集合中添加数据
2:set set = po.stringPropertyNames();
把集合中的键取出,存储到一个set集合中
3:po.getProperty (key)
使用getProperty 方法,通过键获取值
4、store和loda方法
A.void store (OutputStream out , String comments)
  void store(Writer writer , String comments)
  参数:
  OutputStream out :字节输出流,不能写入中文
  Writer writer :字符输出流,可以写中文
  String comments:注释,用来解释说明保存的文件是做什么用的,不能使用中文
B.void load(InputStream inStream)
  void load(Reader reader)
  参数:
  1:InputStream inStream:字节输入流,不能读取含有中文的键值对
  2:Reader reader:自负输入流,可以读取含有中文的键值对
5、使用步骤
1:创建Properties集合对象
2:使用Properties集合对象中的方法 load 读取保存键值对的文件
3:遍历Properties集合
6、注意事项
1:存储键值对的文件中,键与值默认的连接符号可以使用=,空格(其他符号)
2:存储键值对的文件中,可以使用#进行注释,被注释的键值对不会再被读取
3:存储键值对的文件中,键与值默认都是字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值