黑马程序员__java之IO流
来源:互联网 发布:linux网桥作用 编辑:程序博客网 时间:2024/06/05 17:21
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
- IOl流的概述及其分类
1.概念
* IO流用来处理设备之间的数据传输(局域网或者是互联网) * Java对数据的操作是通过流的方式
* Java用于操作流的类都在IO包中
* 流按流向分为两种:输入流,输出流。
* 流按操作类型分为两种:
* 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
* 字符流 : 字符流只能操作纯字符数据,比较方便。
* 2.IO流常用父类
* 字节流的抽象父类:(不能创建对象)
* InputStream ()
* OutputStream()
* 字符流的抽象父类:
* Reader
* Writer
* 3.IO程序书写
* 使用前,导入IO包中的类
* 使用时,进行IO异常处理 --> (IO流操作的是硬盘与内存的关系)
* 使用后,释放资源----->(举例:这就要关闭管道)
IO流的拷贝拷贝图片的几种代码实现:
FileInputStream读取
* FileOutputStream写出
1.
FileInputStream fis = new FileInputStream("致青春.mp3"); //创建输入流对象,关联致青春.mp3
FileOutputStream fos = new FileOutputStream("copy.mp3");//创建输出流对象,关联copy.mp3
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
fis.close();
fos.close();
2.字节流一次读写一个字节数组复制图片和视频
FileInputStream fis = new FileInputStream("致青春.mp3");
FileOutputStream fos = new FileOutputStream("copy.mp3");
int len;
byte[] arr = new byte[1024 * 8]; //自定义字节数组
while((len = fis.read(arr)) != -1) {
//fos.write(arr);
fos.write(arr, 0, len); //写出字节数组写出有效个字节个数
}
fis.close();
fos.close();
3.高效缓冲流
FileInputStream fis = new FileInputStream("致青春.mp3"); //创建文件输入流对象,关联致青春.mp3
BufferedInputStream bis = new BufferedInputStream(fis); //创建缓冲区对fis装饰
FileOutputStream fos = new FileOutputStream("copy.mp3"); //创建输出流对象,关联copy.mp3
BufferedOutputStream bos = new BufferedOutputStream(fos); //创建缓冲区对fos装饰
int b;
while((b = bis.read()) != -1) {
bos.write(b);
}
bis.close(); //只关装饰后的对象即可
bos.close();
IO流 注意事项: 字节流读取中文的问题
* 字节流在读中文的时候有可能会读到半个中文,造成乱码
* 字节流写出中文的问题
* 字节流直接操作的字节,所以写出中文必须将字符串转换成字节数组
* 写出回车换行 write("\r\n".getBytes());
4.为了解决读取字符时候出现乱码可以使用字符流:
* 字符流是可以直接读写字符的IO流
* 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出.
字符流使用说明: *字符流也可以拷贝文本文件, 但不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字节.
* 程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流
* 读取的时候是按照字符的大小读取的,不会出现半个中文
* 写出的时候可以直接将字符串写出,不用转换为字节数组
5.字符流的拷贝代码如下:
FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");
int ch;
while((ch = fr.read()) != -1) {
fw.write(ch);
}
fr.close();
fw.close();
6.读取文本一行字符
BufferedReader的readLine()方法可以读取一行字符(不包含换行符号)
* BufferedWriter的newLine()可以输出一个跨平台的换行符号"\r\n"
*
BufferedReader br = new BufferedReader(new FileReader("aaa.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("bbb.txt"));
String line;
while((line = br.readLine()) != null) {
bw.write(line);
//bw.write("\r\n"); //只支持windows系统
bw.newLine(); //跨平台的
}
br.close();
bw.close();
- 黑马程序员__java之IO流
- 黑马程序员__java IO流学习
- 黑马程序员__java之反射
- 黑马程序员__java之集合
- 黑马程序员__Java输入输出流
- 黑马程序员__Java中API之StringBuffered
- 黑马程序员__java之网络编程
- 黑马程序员__java之面向对象上
- 黑马程序员__JAVA基础__IO流(一)
- 黑马程序员__JAVA基础__IO流(二)
- 黑马程序员__JAVA基础__IO流(三)
- 黑马程序员__JAVA基础__IO流(四)
- 黑马程序员__Java概述
- 黑马程序员之IO流
- 黑马程序员之IO流
- 黑马程序员__java基础之线程间通信
- 黑马程序员__Java之单例设计模式
- 黑马程序员__Java中的注解
- 完全卸载Vmware
- PyQt5教程(1) 介绍
- c语言
- mongo 数据导出到mysql 以及常用查询
- Java Day4
- 黑马程序员__java之IO流
- 12月24日总结及下月计划安排
- tig git的好搭档
- Python 包管理
- Android之面试题总结加强版(一)
- Count the string
- 一个新的开始
- 手机可以连接无线网络,但是win8 总是受限问题
- 架构师于小波:魅族实时消息推送架构