奋斗在JAVA路上的随手记——IO流(一)

第一章 IO概述

1、IO思想
A. 输入in 	读取 read    文件 -> Java程序
B. 输出out 	写出 write   Java程序 -> 文件
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、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、注意点
A.换行写入 
	windows: 	\r\n
	mac:		\r
	linux:		\n
	
B.追加写入
	FileWriter fos = new FileOutputStream("路径", true); 	 //表示追加写入
	FileWriter fw = new FileWriter("路径",true); 			//true表示追加写入
6、文件的复制
//使用字节复制文件,一次复制一个字节(效率慢,但是是"万能"的)
     FileInputStream fis = new FileInputStream("D:\\图片.jpg");
     FileOutputStream fos = new FileOutputStream("D:\\图片01.png");
     int len = 0;
     while ((len = fis.read()) != -1){
         fos.write(len);
     }
     fis.close();
     fos.close();
//使用字节复制文件,一次复制一个字节数组(效率高,是"万能"的)
     FileInputStream fis = new FileInputStream("D:\\图片.jpg");
     FileOutputStream fos = new FileOutputStream("D:\\图片01.jpg");
     byte[] bytes = new byte[1024];
     int len = 0;
     while ((len = fis.read(bytes)) != -1){
         fos.write(bytes,0,len);
     }
     fis.close();
     fos.close();


//字符流用来复制".txt"等类型的文本文件速度更快,但是如果复制其他类型文件;
//例如:图片、视频文件使用字符流复制可能会出现乱码
//使用字符流复制文件(一次复制一个字符,相较于字节复制文件的方式来说效率更快)
     FileReader fr = new FileReader("D:\\a.txt");
     FileWriter fw = new FileWriter("D:\\a01.txt");
     int len = 0;
     while ((len = fr.read()) != -1){
         fw.write(len);
     }
     fr.close();
     fw.close();
//使用字符流赋值文件(一次复制一个字符数组,相较于以上三种方式来说效率最高)
     FileReader fr = new FileReader("D:\\a.txt");
     FileWriter fw = new FileWriter("D:\\a01.txt");
     char[] cs = new char[1024];
     int len = 0;
     while ((len = fr.read(cs)) != -1){
         fw.write(cs,0,len);
     }
     fr.close();
     fw.close();

第四章 IO异常处理

try ( FileWriter fw = new FileWriter("fw.txt"); ) {
    // 写出数据
    fw.write("你好啊"); //你好啊
} catch (IOException e) {
    e.printStackTrace();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值