一:什么是字节?
字节(Byte)是计算信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数。1byte=8bit=8个0/1
二:字母、数字、汉字与字节关系?
1byte=1个字母=1个数字
2byte=1个汉字
因此如果按照字节一个字节一个字节读取文件的话,读取中文输出的时候会出现乱码(因为一个汉字占二个字节)。
三:读取字节的方式--用来读取数字或者字母代码如下:
package com.javaIo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* @按照字节读取文件
* @author zl
*
*/
public class ReadFile_By_byte {
//注:FileInputStream是按照一个字节一个字节的读取数据的,因为一个中文是二个字节,所以读取中文的时候会出现乱码
public void ReadFile(String path) throws IOException{
//加载文件
File F=new File(path);
FileInputStream fis=null;
int count=0;
int sum=0;
//创建文件读取流
try {
fis=new FileInputStream(F);
while((count=fis.read())!=-1){
System.out.println((char)count);
sum++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if(fis!=null){
fis.close();
}
}
}
public static void main(String[] args) throws IOException{
ReadFile_By_byte rb=new ReadFile_By_byte();
rb.ReadFile("E:/filezl.txt");
}
}
四:使用BufferReader读取中文代码如下:
package com.javaIo;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* @使用FileBufferReader读取中文
* @author zl
*
*/
public class ReadFile_By_BufferRead {
public static void readFile(String path) throws IOException{
FileReader Fr=null;
BufferedReader br=null;
String content="";
try {
Fr=new FileReader(path);
br=new BufferedReader(Fr);
while((content=br.readLine())!=null){
System.out.println(content);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
br.close();
Fr.close();
}
System.out.println(content);
}
public static void main(String[] args) throws IOException{
ReadFile_By_BufferRead.readFile("E:/filezl.txt");
}
}