根据流的类型,可分为字节流、字符流、对象流。
关于字节流和字符流:
有stream字眼的就是字节流。有Reader/Writer字眼的就是字符流。两种字眼都有的就是转换流。
缓冲流都要以原来的文件非缓冲流做参数,如字符缓冲流(文件字符流),字节缓冲流(文件字节流)。
而文件流都是以文件或文件路径做参数。如文件字符流(String FilePath),文件字节流(String FilePath)
一、文件字节流
1.写入到文件(出现乱码即需要修改编码)
FileOutputStream fos = null;
try {
//写出去,写到文件上(如果文件已存在,则清空再写)
fos = new FileOutputStream("F:\\test.txt");
fos.write(97);//a
fos.write('s');//as
fos.write("卑鄙是卑鄙者的通行证".getBytes());//as卑鄙是卑鄙者的通行证
fos.write('的');//写入单个中文字符将会改变文件编码使文件乱码,正确写入中文应为上方法
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
追加修改
//jdk1.7之后提供了自动关流的方式
/**
* try(流定义语句){
*
* }catch{}
*/
try (FileOutputStream fos = new FileOutputStream("F:\\test.txt",true)){
//后面的参数代表是否追加,默认false(清空再写)
fos.write(98);//在不改动原文件基础上追加b
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2.文件输入流
try(FileInputStream fis &