1.基本概念
百度百科解释:字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的long。
计算机中的一切最终都是以二进制的字节流形式存在。底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成字节在进行写入。
2.代码实现
代码1
import java.io.FileInputStream;代码2
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);
}
}
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);
}
}