流是指一连串流动的字符以先进先出的原则传送信息的通道
IO流是指输入输出流
在文件流中信息会被转成 二进制(1字节8位)或 字符(unicode编码2字节)
流的分类:
1.按照流向分:
输出流:OutputStream 和 Writer
输入流:InputStream 和 Reacer
2.按照数据处理方式分:
字节流:byte
字符流:char
InputStream/OutputStream 属于字节流不支持汉字
Reacer/Writer 属于字符流支持汉字
File的方法:
File file=new File("文件路径")
file.exists() :判断文件是否存在
file.createNewFile() :创建文件
file.getName() :获得文件名称
file.getPath() :获得文件相对路径
file.parent() :获得文件上一层路径
file.length() :获得文件长度
file.getAbsoutePath() :获得文件完整路径
file.isPirectory() :判断是否是文件夹
file.delete() :删除文件(成功返回true)
使用流读取文件内容:
//1.创建流对象 FileInputStream ins=new FileInputStream(”文件地址“); //2.将读到的内容放入byte数组中 byte[] bytes=ins.read();//读到的内容是ASII码 没有内容返回-1 //3.将byte数组转换为String String s=new String(bytes); //4.关闭流 ins.close() 字符流和字节流的使用方法相同只是将byte数组换成了char数组
使用流写入内容:
//1.创建流 FileOutputStream ops=new FileOutPutStream("文件路径")//如果没有这个文件会自动创建一个 //2.创建写入的内容 String s="内容"; //3.将String的内容转换为Byte数组写入文件 ops.write(s.getBytes()); //4.关闭流 ops.close()
使用流复制文件:
//1.创建输入流和输出流 FileInputStream ins=new FileInputStream("原文件文件地址") FileOutputStream ops=new FileOutputStream("新文件地址") //2.定义一个存储信息的数组 byte[] bytes= new byte[文件长度]; //3.将读取到的内容放入数组 for(int i=0;i<butes.length;i++){ bytes[i]=ins.read(); } //4.写出 ops.write(bytes); //5.关闭流 ops.close() ins.close();
必须关闭流或加一个冲刷缓冲区outputStream.flush()不然内容会存放于缓冲区内写不出去报错