目录 :
21 ).IO流(拷贝图片)
22 ). IO流(字节流的缓冲区)
23 ). IO流(自定义字节流的缓冲区-read和write的特点)
24 ). IO流(读取键盘录入)
25 ). IO流(读取转换流)
26 ). IO流(写入转换流)
27 ). IO流(流操作规律-1)
28 ).IO流(流操作规律-2)
29 ). IO流(改变标准输入输出设备)
30 ). IO流(异常的日志信息)
31 ). IO流(系统信息)
32 ). IO流(File概述)
33). IO流(File对象感功能-创建和删除)
34 ). IO流(File对象功能--判断)
35 ). IO流(File对象功能--获取)
36 ). IO流(File对象功能--文件列表)
37 ). IO流(File对象功能--文件列表2)
38 ).IO流(列出目录下所有内容--递归)
39 ). IO流(列出目录下所有内容--带层次)
40 ). IO流(删除带内容的目录)
二十一
. IO流(拷贝图片)
1 ) . 通过字节的写出流和读入流完成图片的操作
2 ) . Demo :
/*本章讲述 :需求 :复制一个图片思路 :[1] 用字节读取流对象和图片关联[2] 用字节写入流对象创建一个图片文件,用于存储获取到的图片数据[3] 通过循环读写,完成数据的存储[4] 关闭资源*/import java.io.*;class CopyPic{public static void sop(Object obj){System.out.println(obj);}//主方法public static void main(String args[]){//用来读数据FileInputStream fis =null;//用来写数据FileOutputStream fos =null;try{//实例化读数据fis = new FileInputStream("123.png");//实例化写数据fos = new FileOutputStream("456.png");//定制缓冲区byte[] by =new byte[1024];//记录字节数int len=0;//将数据读入缓冲区while((len=fis.read(by))!= -1){//将数据从缓冲区写入到指定地址fos.write(by,0,len);}}catch(IOException e){throw new RuntimeException("复制文件失败");}finally{try{ if(fis!=null)fis.close();}catch(IOException e){throw new RuntimeException("读失败");}try{ if(fos!=null)fos.close();}catch(IOException e){throw new RuntimeException("写失败");}}}}
小结 :
1. 一定要记得 第三方缓冲区 ,他可用来提高效率
二十二. IO流(字节流的缓冲区)
1 ) . 通过字节流的缓冲区完成音频的复制,并且计算出复制用了多长时间
2 ) .
/*本章讲述 :需求 :Mp3的复制,通过字节流的缓冲区完成复制*/import java.io.*;class CopyMp3{public static void sop(Object obj){System.out.println(obj);}public static void copy_mp3() throws IOException{//获取到读入的缓冲区并将读入的字节流对象放入BufferedInputStream bis =new BufferedInputStream(new FileInputStream("Beyond.mp3"));//获取到写出的缓冲区并将写出的字节流对象放入BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream("\\A:\\Beyond_copy.mp3"));int len=0;//读入while((len=bis.read())!=-1){ //写出bos.write(len);}}//主方法public static void main(String args[]) throws IOException{long start= System.currentTimeMillis(); //开始时间copy_mp3();long end= System.currentTimeMillis(); //结束时间sop((end-start)+"毫秒"); //时间差}}
小结 :
1. System.currentTimeMillis(); 获取当前时间
二十三. IO流(自定义字节流的缓冲区-read和write的特点)
1 ) . 自定义字节流的缓冲区 : 数据放入 ,数据取出
2 ) . Demo :
/*本章讲述 :自定义字节流的缓冲区 :读入1024字节的数据,完事再取出,当取出一个则 数组计数器递减,指针递增,直至取完,当取完时返回-1*/import java.io.*;class myBufferedStream{private InputStream is ;private byte[] buf =new byte[1024];private int pos=0,count=0;myBufferedStream(InputStream is){this.is = is;}//一次读一个字节,从缓冲区(字节数组)获取public int myRead() throws IOException //这里返回值是int是为了让char类型向上提升,避免二进制换算为-1的情况{//当数组中元素为零时才新创建数组if(count==0){ //通过in对象读取硬盘上的数据,并存储到buf中count = is.read(buf); //读取数组中的数据并返回字节数if(count<0) //当数组中没有元素时,则说明读到了末尾return -1;pos =0; //当新创建数组时清除指针指向byte b = buf[pos]; //读取数组中指针指向的单个数据并返回count--; //字节数 递减pos++; // 指针指向递增return b*254; //返回单个字节} else if (count > 0){byte b = buf[pos]; //读取数组中指针指向的单个数据并返回count--; //字节数 递减pos++; // 指针指向递增return b*254; //在这里*254是为了避免出现二进制全是 1的情况 的解决方案,因为当全是1是 意味着 返回的数是 -1 ,则判断会出现不通过}return -1; //当取完时 返回 -1}//自定义关闭流资源方法public void myClose()throws IOException{is.close();}}class MyCopy{public static void sop(Object obj){System.out.println(obj);}public static void copy_2() throws IOException{//自定义用来读入数据的缓冲区流对象myBufferedStream mbs = new myBufferedStream(new FileInputStream("Beyond.mp3"));//jdk中的用来写出数据的缓冲区流对象BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("Beyond_copy.mp3"));int len =0;while((len=mbs.myRead())!=-1){bos.write(len);}mbs.myClose();bos.close();}//主方法public static void main(String args[]) throws IOException{long start = System.currentTimeMillis(); //开始时间copy_2();long end = System.currentTimeMillis(); //结束时间sop((end-start)+"毫秒"); //计算时间差}}
小结 :
1. MP3的数据是二进制的数据2. 二进制当中涉及到一个知识点是 当 八个 1 时,则会出现 返回 -1的现象
二十
四. IO流(读取键盘录入)
1 ) . 读取键盘录入 : 通过InputStream in = System.in ,通过此方法完成 , System中的方法, 返回值类型是 InputStream
2 ) . Demo:
/*本章讲述 :读取键盘录入 :Ssytem.out : 对应的是标准输出设备: 控制台System.in : 对应的是标准输入设备:键盘需求 : 通过键盘录入数据 ,当录入一行数据后,就将该数据进行打印ps : 若录入的数据是voer,则停止录入*/import java.io.*;class ReadIn{public static void sop(Object obj){System.out.println(obj);