您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > java中的IO流操作大全
本文由西安白癜风专科医院收集,转载请注明出处本文由西安白癜风专科医院收集,转载请注明出处java中的IO流操作大全一、流的概念流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,而不能读它。实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,只是简单地往流中写数据。形象的比喻——水流,文件======程序,文件和程序之间连接一个管道,水流就在之间形成了,自然也就出现了方向:可以流进,也可以流出.便于理解,这么定义流:流就是一个管道里面有流水,这个管道连接了文件和程序。二、流的分类1.java.io包中的类对应两类流,一类流直接从指定的位置(如磁盘文件或内存区域)读或写,这类流称为结点流(nodestream),其它的流则称为过滤器(filters)。过滤器输入流往往是以其它输入流作为它的输入源,经过过滤或处理后再以新的输入流的形式提供给用户,过滤器输出流的原理也类似。2.Java的常用输入、输出流java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类:字符流和字节流。Java的字节流InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。Java的字符流Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。结合开始所说的输入/输出流,出现了个一小框架。字节流字符流输入流InputStreamReader本文由西安白癜风专科医院收集,转载请注明出处本文由西安白癜风专科医院收集,转载请注明出处输出流OutputStreamWriter【案例1】创建一个新文件[java]viewplaincopy1.importjava.io.*;2.classhello{3.publicstaticvoidmain(String[]args){4.Filef=newFile(D:\\hello.txt);5.try{6.f.createNewFile();7.}catch(Exceptione){8.e.printStackTrace();9.}10.}11.}【运行结果】:程序运行之后,在d盘下会有一个名字为hello.txt的文件。【案例2】File类的两个常量[java]viewplaincopy1.importjava.io.*;2.classhello{3.publicstaticvoidmain(String[]args){4.System.out.println(File.separator);5.System.out.println(File.pathSeparator);6.}7.}【运行结果】:\;此处多说几句:有些同学可能认为,我直接在windows下使用\进行分割不行吗?当然是可以的。但是在linux下就不是\了。所以,要想使得我们的代码跨平台,更加健壮,所以,大家都采用这两个常量吧,其实也多写不了几行。呵呵、现在我们使用File类中的常量改写上面的代码:[java]viewplaincopy1.importjava.io.*;2.classhello{3.publicstaticvoidmain(String[]args){4.StringfileName=D:+File.separator+hello.txt;本文由西安白癜风专科医院收集,转载请注明出处本文由西安白癜风专科医院收集,转载请注明出处5.Filef=newFile(fileName);6.try{7.f.createNewFile();8.}catch(Exceptione){9.e.printStackTrace();10.}11.}12.}你看,没有多写多少吧,呵呵。所以建议使用File类中的常量。删除一个文件[java]viewplaincopy1./**2.*删除一个文件3.**/4.importjava.io.*;5.classhello{6.publicstaticvoidmain(String[]args){7.StringfileName=D:+File.separator+hello.txt;8.Filef=newFile(fileName);9.if(f.exists()){10.f.delete();11.}else{12.System.out.println(文件不存在);13.}14.15.}16.}创建一个文件夹[java]viewplaincopy1./**2.*创建一个文件夹3.**/4.importjava.io.*;5.classhello{6.publicstaticvoidmain(String[]args){7.StringfileName=D:+File.separator+hello;8.Filef=newFile(fileName);9.f.mkdir();本文由西安白癜风专科医院收集,转载请注明出处本文由西安白癜风专科医院收集,转载请注明出处10.}11.}【运行结果】:D盘下多了一个hello文件夹列出指定目录的全部文件(包括隐藏文件):[java]viewplaincopy1./**2.*使用list列出指定目录的全部文件3.**/4.importjava.io.*;5.classhello{6.publicstaticvoidmain(String[]args){7.StringfileName=D:+File.separator;8.Filef=newFile(fileName);9.String[]str=f.list();10.for(inti=0;istr.length;i++){11.System.out.println(str[i]);12.}13.}14.}【运行结果】:$RECYCLE.BIN360360Downloads360Rec360SoftMoveConfig.MsidaDownloadsDriversBackupeclipsejavaweb整合开发和项目实战LenovoMSOCacheProgramProgramFiles本文由西安白癜风专科医院收集,转载请注明出处本文由西安白癜风专科医院收集,转载请注明出处pythonRECYGLER.{8F92DA15-A229-A4D5-B5CE-5280C8B89C19}SystemVolumeInformationTomcat6varvod_cache_data新建文件夹(你的运行结果应该和这个不一样的,呵呵)但是使用list返回的是String数组,。而且列出的不是完整路径,如果想列出完整路径的话,需要使用listFiles.他返回的是File的数组列出指定目录的全部文件(包括隐藏文件):[java]viewplaincopy1./**2.*使用listFiles列出指定目录的全部文件3.*listFiles输出的是完整路径4.**/5.importjava.io.*;6.classhello{7.publicstaticvoidmain(String[]args){8.StringfileName=D:+File.separator;9.Filef=newFile(fileName);10.File[]str=f.listFiles();11.for(inti=0;istr.length;i++){12.System.out.println(str[i]);13.}14.}15.}【运行结果】:D:\$RECYCLE.BIND:\360D:\360DownloadsD:\360RecD:\360SoftMoveD:\Config.MsiD:\daD:\DownloadsD:\DriversBackup本文由西安白癜风专科医院收集,转载请注明出处本文由西安白癜风专科医院收集,转载请注明出处D:\eclipseD:\javaweb整合开发和项目实战D:\LenovoD:\MSOCacheD:\ProgramD:\ProgramFilesD:\pythonD:\RECYGLER.{8F92DA15-A229-A4D5-B5CE-5280C8B89C19}D:\SystemVolumeInformationD:\Tomcat6D:\varD:\vod_cache_dataD:\新建文件夹通过比较可以指定,使用listFiles更加方便、判断一个指定的路径是否为目录[java]viewplaincopy1./**2.*使用isDirectory判断一个指定的路径是否为目录3.**/4.importjava.io.*;5.classhello{6.publicstaticvoidmain(String[]args){7.StringfileName=D:+File.separator;8.Filef=newFile(fileName);9.if(f.isDirectory()){10.System.out.println(YES);11.}else{12.System.out.println(NO);13.}14.}15.}【运行结果】:YES搜索指定目录的全部内容[java]viewplaincopy1./**本文由西安白癜风专科医院收集,转载请注明出处本文由西安白癜风专科医院收集,转载请注明出处2.*列出指定目录的全部内容3.**/4.importjava.io.*;5.classhello{6.publicstaticvoidmain(String[]args){7.StringfileName=D:+File.separator;8.Filef=newFile(fileName);9.print(f);10.}11.publicstaticvoidprint(Filef){12.if(f!=null){13.if(f.isDirectory()){14.File[]fileArray=f.listFiles();15.if(fileArray!=null){16.for(inti=0;ifileArray.length;i++){17.//递归调用18.print(fileArray[i]);19.}20.}21.}22.else{23.System.out.println(f);24.}25.}26.}27.}【运行结果】:D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\framepages\web4welcome_jsp.javaD:\Tomcat6\work\Catalina\localhost\nevel\org\apache\js
本文标题:java中的IO流操作大全
链接地址:https://www.777doc.com/doc-6148764 .html