黑马程序员_字节流和字符流

来源:互联网 发布:纵向加密 数据网 编辑:程序博客网 时间:2024/05/16 17:24
------- android培训、java培训、期待与您交流! ----------


1、字节流


字节流主要是操作byte(字节)的类型数据:
字节输出流: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等都是采用字节的方式的保存,那么肯定字节流会比字符流使用的更广泛。
但是需要说明的是,但是如果要是想操作中文的话,字符流肯定是最好使的。(字节流的话可能会出现乱码(一个汉字分成了两份)!)


0 0
原创粉丝点击