文件字节流
FileInputStream
单个字节读取:
public static void main(String[] args) throws Exception {
//创建文件字节流FileInputStream对象,并指定文件路径
FileInputStream fileInputStream = new FileInputStream("D:\\stu\\aaa.txt");
//读取文件
int data = 0;//定义data接收读取到的数据
//单个字节读取
while ((data = fileInputStream.read()) != -1) {//如果data!=-1,则代表当前有读取到数据。data==-1时,则代表该数据已经读取完毕
//这里直接输出data打印的数据的话,打印出的是实际数据所对应的ASCLL编码,所以需要强转为char
// System.out.println(data);
System.out.print((char) data);
}
//关闭文件字节流FileInputStream对象
fileInputStream.close();
}
一次读出多个字节:
public static void main(String[] args) throws Exception {
//创建文件字节流FileInputStream对象,并指定文件路径
FileInputStream fileInputStream = new FileInputStream("D:\\stu\\aaa.txt");
//读取文件
//定义buf缓冲区用于接收读取到的数据。
//这里暂定长度为5个字节,如果实际字节长度超过5个字节,则可以多次读取;
byte[] buf = new byte[5];
//读取单个字节
//1、多次读取
int count = 0;
while ((count = fileInputStream.read(buf)) != -1) {
System.out.println(new String(buf));
}
//关闭文件字节流FileInputStream对象
fileInputStream.close();
}
注意事项:
System.out.println(new String(buf));
这里如果最后一次有效数据长度未达到5个字节时,会出现缓存遗留问题。所以建议优化为下面的方式:
System.out.println(new String(buf, 0, count));
根据count读取的字节长度来进行输出
FileOutputStream
public static void main(String[] args) throws Exception {
//创建文件输出流对象FileOutputStream对象 name:文件地址;append:为false时,数据会覆盖原文件。为true时,在原数据尾部追加写入
FileOutputStream fileOutputStream = new
FileOutputStream("D:\\stu/bbb.txt", false);
//写入文件 单个字节输出,可以使用ASCII码,也可以使用char字符
fileOutputStream.write(97);
fileOutputStream.write('1');
//关闭文件输出流对象FileOutputStream对象
fileOutputStream.close();
}

浙公网安备 33010602011771号