资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
第11页 / 共15页
第12页 / 共15页
第13页 / 共15页
第14页 / 共15页
第15页 / 共15页
亲,该文档总共15页全部预览完了,如果喜欢就下载吧!
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第16讲 I/O一,16.1 File,类,16.2,文件过滤器,16.3,流,16.4,字节流和缓冲字节流,16.5,字符流和缓冲字节流,16.6,本讲小结,Java,提供了丰富的类以实现与文件、控制台、网络等进行通信,而通信的方式可以按字节或字符的方式进行,可以是顺序读取数据,也可以是随机读取数据。,16.1 File类,File类的对象既可以表示文件,也表示目录。我们可以在相对路径下创立文件或目录,也可以在绝度路径下创立文件或路径。在创立文件或路径时,要特别注意路径中文件的分隔符,不同的操作系统中,文件分隔符是不同。“/是UNIX下的分隔符,而Windows下为“,为了使程序具有良好的移植性,最好使用File.separator。,16.2 文件过滤器,我们还可以做一个文件过滤器,只列出符合条件的文件。下面代码列出当前目录下所有的,.txt,文件:,public class FileFilter,String suffix;,public void showFiles(String path,String suffix),this.suffix=suffix;,File file=new File(path);,String name=file.list(new MyFileFilter();,for(int i=0;i name.length;i+),System.out.println(namei);,class MyFileFilter implements FilenameFilter,public boolean accept(File dir,String name),return name.endsWith(suffix);,16.3 流,Java,使用流的方式读写硬盘、内存、键盘等设备上的数据。按照流的方向,可以分为输入流和输出流。按照要处理的数据类型,可以分为字节流和字符流。,java.io,包中。所有输入流类是,InputStream,和,Reader,的子类,所有输出流类都是,OutputStream,和,Writer,的子类。其中,InputStream,和,OutputStream,表示字节流,,Reader,和,Writer,表示字符流,。,16.4 字节流和缓冲字节流,字节流可以处理所有类型的数据,视频、音频、图片、文本等,读取时按照字节读取,读到一个字节就返回一个字节。,/字节流处理读写文本文件的例如,import java.io.*;,public class RWByStreamOne,public static void main(String args),try,FileInputStream fis=new FileInputStream(test.txt);,FileOutputStream fos=new FileOutputStream(test_new.txt);,byte b=new byte10;int a=0;,while(a=fis.read(b)!=-1),fos.write(b,0,a);,fos.flush();fos.close();fis.close();,catch(IOException e),e.printStackTrace();,/缓冲字节流读取视频文件的例如,import java.io.*;,public class RWByBufferedStream,public static void main(String args),try FileInputStream fis=new FileInputStream(a.mp4);,/内存的大小是经验值,可以通过屡次运行程序而定,BufferedInputStream bis=new BufferedInputStream(fis,1024*100);,FileOutputStream fos=new FileOutputStream(a_new.mp4);,BufferedOutputStream bos=new BufferedOutputStream(fos,1024*100);,byte b=new byte100;,int a=0;long start=System.currentTimeMillis();,while(a=bis.read(b)!=-1),bos.write(b,0,a);,bos.flush();bos.close();,fos.close();bis.close();fis.close();,long stop=System.currentTimeMillis();,System.out.println(所用时间:+(stop-start)+ms);,catch(IOException e),e.printStackTrace();,16.5 字符流和缓冲字符流,字符流只能处理纯文本数据,读取时,读取一个或多个字符,然后查找指定的编码表,将查到的字符返回。,public class RWByReaderAndWriter,public static void main(String args),try,FileReader fis=new FileReader(test.txt);,FileWriter fos=new FileWriter(test_new.txt);,char b=new char10;,int a=0;,while(a=fis.read(b)!=-1),fos.write(b,0,a);,fos.flush();,fos.close();,fis.close();,catch(IOException e),e.printStackTrace();,缓冲字符流可以提高字符流的读取效率,例如代码如下:,public class RWByBufferedChar,public static void main(String args),try FileReader fis=new FileReader(test.txt);,BufferedReader br=new BufferedReader(fis);,FileWriter fos=new FileWriter(test_new.txt);,BufferedWriter bw=new BufferedWriter(fos);,String s;,while(s=br.readLine()!=null),bw.write(s+n);,bw.flush();bw.close();fos.close();,br.close();fis.close();,catch(IOException e)e.printStackTrace();,Java还提供了一个高效输出字符串的类:PrintWriter。例如代码如下:import java.io.*;,public class RByPrintWriter,public static void main(String args),try,FileReader fis=new FileReader(test.txt);,BufferedReader br=new BufferedReader(fis);,PrintWriter pw=new PrintWriter(test_new.txt);,String s;,while(s=br.readLine()!=null)pw.println(s);,pw.flush();pw.close();br.close();fis.close();,catch(IOException e)e.printStackTrace();,16.6 本讲小结,本讲首先讲述了File类的用法,它即表示文件,也可以表示路径,使用File类中的方法还可以完成文件的过滤。其次讲解了字节流和字符流,并给出了相应的例如。,讲后练习,1,、编写程序,列出给定路径下的文件名和目录文件名。,2,、编写程序,列出当前目录下的所有,.class,文件。,3,、编写程序,实现从文件中读出文件内容,并将其打印在屏幕当中,并标注上行号。,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6