java字节流和字符流的区别?

Python018

java字节流和字符流的区别?,第1张

Java 字符流和字节流的区别如下:

字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串。

而字节流处理单元为 1 个字节,操作字节和字节数组。

请采纳,谢谢

本来看有人给你回答了也就不写了,但是发现问题就在于你是需要字节流,那人回答使用的是字符流。

import java.io.File

import java.io.FileInputStream

import java.io.FileNotFoundException

import java.io.FileOutputStream

import java.io.IOException

public class WordsCount {

public static void main(String[] args) {

File fRead = new File("D:\\test.txt")

File fWrite = new File("D:\\count.txt")

try {

FileInputStream fis = new FileInputStream(fRead)

FileOutputStream fos = new FileOutputStream(fWrite)

int ch

int count = 0

while((ch = fis.read()) != -1) {

if((char)ch == 'a') {

count++

}

}

//如果直接将count直接写入就会出现问题,例如:a的字符是7个,写入后就是ascii 7 ,打开就是乱码,所以下面需要处理

String temp = "" + count

byte[] b = temp.getBytes()

fos.write(b)

fis.close()

fos.close()

} catch (FileNotFoundException e) {

e.printStackTrace()

} catch (IOException e) {

e.printStackTrace()

}

}

}

Java字符流是处理字符(Char)对象用的,字节流是处理字节(Byte)对象用的。处理的目标对象不同,处理方法也就不一样了。

字符流处理的基本单位是字符(Java中的字符是16位的),输入流以Reader为基础,输出流以Writer为基础;

字节流的基本单位是字节(Java中的字节是8位的),输入流以

InputStream为基础,输出流以

OutputStream为基础;

字符流在输入时可以按字符读取,也可以按行读取,会去掉回车换行,常用于读取字符数据;

而字节流按字节读取,不作任何处理,常用于读取二进制数据。

Java中的字符在内部都是使用Unicode进行表示的,因此,要正确读取字符数据,需要知道字符的编码字符集,字符流提供编码字符集的指定,如果不指定使用系统默认的方式对字符数据进行编码转换,这个编码字符集不正确,会造成读进来的地字符出现乱码。

字节流虽然是读取二进制数据用的,但也可以读取字符文件,按字节进行处理,读进来之后可以根据编码字符集进行转换,也可以变成字符串。