黑马程序员_字节流和字符流
来源:互联网 发布:纵向加密 数据网 编辑:程序博客网 时间:2024/05/16 17:24
1、字节流
字节输出流:OutputStream
字节输入流:InputStream
2、字符流
Java中的字符是Unicode编码,是双字节的,1个字符 等于 2个字节;
使用字节来处理字符文本就不太方便了,此时可以考虑使用字符流;
字符流主要是操作char的类型数据:
字符输出流:Writer
字符输入流:Reader
3、字节流和字符流的区别
a,在进行字符流操作的时候会使用到缓冲区(内存中),而字节流操作的时候是不会使用到缓冲区的。
b,在输出的时候,OutputStream类即使最后没有关闭内容也可以输出。但是如果是Writer的话,则如果不关闭,最后一条内容是无法输出的
c,字节流:程序 → 文件
字符流:程序 → 缓冲区(内存中) → 文件
4,实例:
import java.io.FileInputStream;
import java.io.InputStream;
public class Demo4 {
public static void main(String[] args) throws Exception {
//第一步:创建源!
String filename = "6.4";
//第二步:创建管道!
InputStream ips = new FileInputStream(filename);
//第三步:操作!
byte []buff = new byte[1024];
int len;//定义缓冲区
while((len = ips.read(buff)) != -1){
System.out.println(new String(buff,0,buff.length));
System.out.println("==========================================");
}
ips.close();//第四步:关闭资源
}
}
//字符流读出来,这时候就不会出现乱码的情况,在进行文字操作的时候最好使用字符流!
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Demo6 {
public static void main(String[] args) {
File src = new File("6.4");
read(src);
}
public static void read(File src){
Reader r = null;
try {
r = new FileReader(src);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
char []c = new char[1024];
int len;
try {
while((len = r.read(c)) != -1){
System.out.println(new String(c,0,c.length));
}
} catch (IOException e) {
e.printStackTrace();
}
try {
r.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4、总结
两者相比,肯定使用字节流更加的方便,而且在程序中像图片、MP3等都是采用字节的方式的保存,那么肯定字节流会比字符流使用的更广泛。
但是需要说明的是,但是如果要是想操作中文的话,字符流肯定是最好使的。(字节流的话可能会出现乱码(一个汉字分成了两份)!)
- 黑马程序员_字节流和字符流
- 黑马程序员_字节流
- 黑马程序员_字节流
- 黑马程序员_IO流2_(字符缓冲区,字节缓冲区,字节字符转换流)
- 《黑马程序员》 字符流和字节流 -----第十八天
- 黑马程序员 字节流和字符流缓冲区的对比
- 黑马程序员——字节流和字符流
- 黑马程序员_IO(字符流和字节流)
- 黑马程序员——字节流和字符流
- 黑马程序员---Java基础---字节流和字符流
- 黑马程序员_Java_IO流_字节流
- 黑马程序员_Java_IO流_字节流
- 黑马程序员_字节流、缓冲流
- 黑马程序员:字符流与字节流
- 黑马程序员---字符流,字节流
- 黑马程序员_IO流1_(IO流概述,字符流,字节流,FileWriter,FileReader)
- 黑马程序员_<<字节流(含子类)和字节缓冲流(InputStream,OutputStream,BufferedInputStream,BufferedOutputStream)>>
- 黑马程序员_Java_IO流_字符流
- sharelatex在centos 6.7 64位上的部署(1)
- (一)JavaMail 简介
- 自定义圆形按钮并实现按下状态
- Android单元测试研究与实践
- Android Handler 避免内存泄漏的用法总结
- 黑马程序员_字节流和字符流
- 前端黑魔法之css3以及h5
- 幽默讲解linux的Socket IO模型
- 数据包分析——数据链路层 和 网络层
- iOS学习----NSNumber的使用
- 文件分割和合并
- 网页设置背景图片
- 常用插件
- JSP页面中注释<!-- --> 和 <%-- --%>的区别