字节流/字符流

时间:2021-07-23 21:02:34

1.基本概念

百度百科解释:字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是虚拟机encode来处理,也就是要进字符集转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的long。

计算机中的一切最终都是以二进制的字节流形式存在。底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成字节在进行写入。

2.代码实现

代码1

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class IOTest {

public static void main(String[] args) throws Exception {

String str = "你好,世界";

FileOutputStream fos = new FileOutputStream("1.txt");
fos.write(str.getBytes("UTF-8"));
fos.close();

FileInputStream fr = new FileInputStream("1.txt");
byte[] buf = new byte[1024];
int len = fr.read(buf);
String myStr = new String(buf,0,len,"UTF-8");
System.out.println(myStr);

}

}
代码2

import java.io.FileReader;
import java.io.FileWriter;

public class IOTest {

public static void main(String[] args) throws Exception {

String str = "你好,世界";


FileWriter fw = new FileWriter("1.txt");
fw.write(str);
fw.close();

FileReader fr = new FileReader("1.txt");
char[] buf = new char[1024];
int len = fr.read(buf);
String myStr = new String(buf,0,len);
System.out.println(myStr);

}

}

代码3

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class IOTest {

public static void main(String[] args) throws Exception {

String str = "你好,世界";

PrintWriter pw = new PrintWriter("1.txt","utf-8");
pw.write(str);
pw.close();

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("1.txt"),"UTF-8"));
String myStr = br.readLine();
br.close();
System.out.println(myStr);
}

}