Java使用I/O流读取文件内容的方法详解
本文实例讲述了Java使用I/O流读取文件内容的方法。分享给大家供大家参考,具体如下:
要利用I/O流读取文件内容,首先要掌握InputStream的体系结构。
这个体系中FileInputStream和BufferedInputStream是一定要掌握的,因为使用的频率比较高。
InputStream的方法:InputStream位于java.io包下
OutputStream的方法:
读取文件(代码):
packagecom.jredu.oopch11; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.InputStream; /** *I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。 *输入流:数据源数据流向计算机内存的过程 *输出流:把数据从程序流向目标数据源的过程 *@authorAdministrator * */ publicclassCh01{ /** *读取文件内容 *@paramargs */ publicstaticvoidmain(String[]args){ //InputStream:是一个抽象类 //\:是一个转移符 //表示磁盘路径的两种表示方式:1、\\2、/ try{ //从文件地址中读取内容到程序中 //1、建立连接 InputStreamis=newFileInputStream("E:/iodemo/ch01.txt"); //2、开始读取信息 /* //方法1:一次只读一个 System.out.println(is.read());//读取的是字节型的:49 System.out.println((byte)is.read());//50 */ //方法2:定义数组,循环读取 //先定义一个字节数组存放数据 byte[]b=newbyte[5];//把所有的数据读取到这个字节当中 //声明一个int存储每次读取到的数据 inti=0; //定义一个记录索引的变量 intindex=0; //循环读取每个数据 while((i=is.read())!=-1){//把读取的数据放到i中 b[index]=(byte)i; index++; } //把字节数组转成字符串 System.out.println(newString(b)); //关闭流 is.close(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock //系统强制解决的问题:文件没有找到 e.printStackTrace(); }catch(IOExceptione){ //文件读写异常 //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
packagecom.jredu.oopch11; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.InputStream; importjava.util.Arrays; /** *I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。 *输入流:数据源数据流向计算机内存的过程 *输出流:把数据从程序流向目标数据源的过程 *@authorAdministrator * */ publicclassCh02{ /** *读取文件内容 *@paramargs */ publicstaticvoidmain(String[]args){ //InputStream:是一个抽象类 //\:是一个转移符 //表示磁盘路径的两种表示方式:1、\\2、/ try{ //从文件地址中读取内容到程序中 //1、建立连接 InputStreamis=newFileInputStream("E:/iodemo/ch01.txt"); //2、开始读取信息 //先定义一个字节数组存放数据 byte[]b=newbyte[5];//把所有的数据读取到这个字节当中 //完整的读取一个文件 is.read(b); //read:返回的是读取的文件大小 //最大不超过b.length,返回实际读取的字节个数 System.out.println(Arrays.toString(b));//读取的是字节数组 //把字节数组转成字符串 System.out.println(newString(b)); //关闭流 is.close(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock //系统强制解决的问题:文件没有找到 e.printStackTrace(); }catch(IOExceptione){ //文件读写异常 //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
packagecom.jredu.oopch11; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.InputStream; importjava.util.Arrays; /** *I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。 *输入流:数据源数据流向计算机内存的过程 *输出流:把数据从程序流向目标数据源的过程 *@authorAdministrator * */ publicclassCh03{ /** *读取文件内容 *@paramargs */ publicstaticvoidmain(String[]args){ //InputStream:是一个抽象类 //\:是一个转移符 //表示磁盘路径的两种表示方式:1、\\2、/ try{ //从文件地址中读取内容到程序中 //1、建立连接 InputStreamis=newFileInputStream("E:/iodemo/ch01.txt"); //2、开始读取信息 //先定义一个字节数组存放数据 byte[]b=newbyte[is.available()];//把所有的数据读取到这个字节当中 //is.available():返回文件的大小 //while(is.available()==0);//不等于0时才停止循环 //完整的读取一个文件 intoff=0; intle=2; while(is.read(b,off,2)!=-1){ off+=1; } is.read(b,off,2); //read:返回的是读取的文件大小 //最大不超过b.length,返回实际读取的字节个数 System.out.println(Arrays.toString(b));//读取的是字节数组 //把字节数组转成字符串 System.out.println(newString(b)); //关闭流 is.close(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock //系统强制解决的问题:文件没有找到 e.printStackTrace(); }catch(IOExceptione){ //文件读写异常 //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
packagecom.jredu.oopch11; importjava.io.BufferedInputStream; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.util.Arrays; publicclassCh04{ /** *读取中文字符的文件 *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub try{ /*FileInputStreamfis=newFileInputStream("E:/iodemo/ch04.txt"); //包装流 BufferedInputStreambis=newBufferedInputStream(fis);*/ //包装流 BufferedInputStreambis=newBufferedInputStream(newFileInputStream("E:/iodemo/ch04.txt")); //读取文件内容 byte[]b=newbyte[bis.available()]; bis.read(b); /*char[]c=newchar[b.length]; for(inti=0;i packagecom.jredu.oopch11; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; publicclassCh05{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub try{ //读取文件 FileInputStreamfis=newFileInputStream("E:/iodemo/ch01.txt"); //fis.available():文件的长度 byte[]b=newbyte[fis.available()]; //skip:跳过n个字节后再开始读取 fis.skip(5);//跳过前5个 fis.read(b); System.out.println(newString(b)); fis.close(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }packagecom.jredu.oopch11; importjava.io.BufferedInputStream; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; publicclassCh06{ /** *读取过程暂停,给当前做一个标记,下一次从标记位置开始读取 *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub //读取过程中暂停 //给当前做一个标记 //下一次从标记位置开始读取 try{ BufferedInputStreambis=newBufferedInputStream(newFileInputStream("E:/iodemo/ch06.txt")); byte[]b=newbyte[bis.available()]; //bis.read(b,0,b.length/2); //设置断点 bis.mark(bis.read(b,0,b.length/2));//位置就是读取的长度 System.out.println(newString(b)); System.out.println("暂停读取...."); Thread.sleep(2000);//休眠2s //休眠后继续读 System.out.println("继续读取..."); //reset:将当前复位的位置设置成上次调用mark标记的位置 bis.reset(); bis.read(b); System.out.println(newString(b)); bis.close(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(InterruptedExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }packagecom.jredu.oopch11; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.SequenceInputStream; /** *序列流(集合流) *把n个流合并在一起读取 *@authorAdministrator * */ publicclassCh07{ publicstaticvoidmain(String[]args){ try{ //第一个文件流 FileInputStreamfis1=newFileInputStream("E:/iodemo/ch01.txt"); //第二个文件流 FileInputStreamfis2=newFileInputStream("E:/iodemo/ch04.txt"); //合并到序列流中 SequenceInputStreamsis=newSequenceInputStream(fis1,fis2); //方式1 ////临时存放数据的数组 //intlen=fis1.available()+fis2.available(); //byte[]b=newbyte[2*len+1]; ////把每一次读取到的临时数据存放如sb中 ////StringBuffersb=newStringBuffer(); ////一次性读取所有的内容 //intoff=0; //inti=0; //while((i=sis.read(b,off,len))!=-1){ ////sb.append(); //off+=i; //} //System.out.println(newString(b)); //方式2 byte[]b=newbyte[fis1.available()]; //StringBuffersb=newStringBuffer(); //inti=0; while(sis.read(b)!=-1){ System.out.println(newString(b)); //sb.append(newString(b)); } //System.out.println(sb.toString()); sis.close(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }packagecom.jredu.oopch11; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.SequenceInputStream; importjava.util.Vector; publicclassCh08{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub try{ //三个文件流 FileInputStreamfis1=newFileInputStream("E:/iodemo/a.txt"); FileInputStreamfis2=newFileInputStream("E:/iodemo/b.txt"); FileInputStreamfis3=newFileInputStream("E:/iodemo/c.txt"); //把三个流添加到集合中 Vectorvector=newVector<>(); vector.add(fis1); vector.add(fis2); vector.add(fis3); //vector.elements();//方法返回的是Enumeration //合并到一个序列流中 SequenceInputStreamsis=newSequenceInputStream(vector.elements()); byte[]b=newbyte[fis1.available()+fis2.available()+fis3.available()]; //读取 intoff=0; //vector.get(i).available():一个文件的长度 for(inti=0;i 更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。