字符与字节
2017-02-17 本文已影响17人
李霖神谷
数据分成2大类,一类字节数据,一类是字符数据。但是任何数据在底层都是以字节形式保存的。字节数据文件只能使用字节流来操作。字符数据文件可以使用字符流读取,也可以使用字节流读取。
字节数据文件:图片,音频,视频,压缩文件等
字符数据文件:以字节的形式表示的字符内容的文件,都可以称为字符文件。
我们生活中qq,微信使用的都是字符类型的数据来交流,而中文都是两个字节组成一个汉字,当你将字符转换成计算机识别的字节类型的数据时,老美的英文字母,一个字母代表一个字节,可以根据acsii码表翻译成对应的数据。而翻译中文时就会造成乱码。
能够识别中文的码表 utf-8 unicode GBK GB2312。
字符输入流演示:
import java.io.FileReader;
import java.io.IOException;
public class IoDemo {
public static void main(String[] args) throws IOException {
FileReader f = new FileReader("e:/lishuai.txt");
int ch;
while ((ch = f.read()) != -1) {
System.out.print((char)ch);
}
f.close();
}
}
想要读取文件中的字符数据就要使用字符输入流对象FileReader读取数据。当使用字符流读取数据的时候,其实在字符的底层使用的是字节流在读取数据,只不过在读取的时候,它会把读取的数据返回到Read中的字节流缓冲区 这后把这些字节数据去查询码表中对应的那个字符,然后把这个字符反给调用read的程序。
字符流 = 字节流 + 编码表
字符输出流演示:
import java.io.FileWriter;
import java.io.IOException;
public class IoDemo {
public static void main(String[] args) throws IOException {
FileWriter f = new FileWriter("e:/lishuai.txt");
f.write(2015);
f.write("li李帅");
f.flush();
f.close();
}
}
这里要注意使用write方法写的时候,写入到缓冲区内,要使用flush方法才能将缓冲区内的数据存储到硬盘中。