开发者

java中的FileInputStream三种read()函数用法

目录
  • FileInppythonutStream流的三种read()函数对比
    • 1. int read( )函数 
    • 2. read( byte [ ] ) 
    • 3. read(byte[ ] ,int off ,int len)
  • FileInputStrepythonam中的read()方法
    • 总结

      FileInputStream流的三种read()函数对比

      首先我们先创建FileIputStream流对文件进行读取

      	public static void main(String[] args) throws IOException {
      		//创建File对象,保存文件夹路径iu
      		File fin_floder = new File("C:\\test.txt");	
      	
      		//创建从文件读取数据的FileInputStream流
      		FileInputStream fin = new FileInputStream(fin_floder);
      		
      

      1. int read( )函数 

      该函数的返回值为int数值,表示读取的字符对应的ascii码,当返回为-1表示读取到文件末尾;

                  //顺序读取到文件末尾
      			int temp = 0;
      			while( (temp = fin.read()) != -1) {
      			 	System.out.print(temp+"   ");  //打印read()返回值
      		 		System.out.printf("%c",temp);开发者_Python开发  //打印ascii码对应的字符
      		 		System.out.println();			//换行
      			}
      

      读取 hello,world 文本文档的结果:

      java中的FileInputStream三种read()函数用法

      2. read( byte [ ] ) 

      返回读入缓冲区的字节总数,到末尾返回-1

      	int size = fin.available();  //返回文件的总字节数
      	byte[] b = new byte[size];   //生成缓存用于存放读入的字节
      	System.out.println(fin.read(b));
      	String str = new String(b);  //将字节数组转化为字符串
      	System.out.println(str);
      

      读取 hello,world 文本文档的结果:数值 11

      java中的FileInputStream三种read()函数用法

      3. read(byte[ ] ,int off ,int len)

      off表示目标数组b中的起始偏移量,也就是从第几个下标开始写入数组,len表示写入数组的长度;

      	int size = fin.available();
      	byte[] b = new byte[size];
      	fin.read(b,2,5); //从数组的的第三个元素开始写入,写五个字节长度
      	String str = new String(b); //字节数组转化为字符串
      	System.out.println(str);
      

      输出结果为:

      java中的FileInputStream三种read()函数用法

      FileInputStream中的read()方法

      首先这是我自己写代码的时候遇到的一www.devze.com个问题,我思来想去,终于想通透了,所以想分享给大家,当然编程客栈这也是一个非常简单的问题。

      public class IO_InputStream
        public static void main(String[] args){//需要导包的,图方便我就不写了
      //1.new一个FileInputStream对象
         FileInputStream fis = new FileInputStream("chifan.next)) ;
         //例如这个文本里面我放了1234567共7个字符,编程下面开始读取文件
         while(fis.read() != -1){
           System.out.print( char)fis.read() );  //将read()方法调用后返回值为int类型强制转换为字符,以便打印
         }
         //但是打印结果就是:246,隔一个打印一个,我感到疑惑
         //后来我左思右想发现我在while的执行语句块里面的打印方法又调用了一次read()方法,导致打印的其实是每次读取两个字符后,只会打印每两个的最后一个字符,如果我们在123456后面再一个7,那么最后打印的就是一个?如何解决呢?就是我们不要在执行语句块里面出现read()方法
         int len;
         while(len=fis.read() != -1){
           System.out.print( char)len);
      }
      //这样结果就一致了
      

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜