美文网首页
*字节流与字符流3(InputStream)

*字节流与字符流3(InputStream)

作者: 秋笙fine | 来源:发表于2019-01-29 17:38 被阅读0次

    如果程序要进行数据读取的功能,可以使用InputStream类功能。

    public abstract class InputStream
    extends Object
    implements Closeable
    

    虽然与OutputStream一样继承了Closeable接口,但是一样不用去考虑此接口的存在,此类提供3个方法读取的方法:
    读取单个字节:

    public abstract int read()
                      throws IOException
    

    返回值:返回读取的字节内容,如果现在已经没有内容了,如何用int型表示内容为空呢?没有数据可读,用-1表示。循环过程使用while条件循环。

    将读取的数据保存在字节数组里:

    public int read(byte[] b)
             throws IOException
    
    

    返回值:返回读取的数据长度,但是如果已经读取到结尾了,返回-1

    将文件中读取的数据保存在部分字节数组里:

    public int read(byte[] b,
           int off,
           int len)
             throws IOException
    

    返回值:读取的部分数据的长度,如果已经读取到结尾了,返回-1.

    范例:向数组里面读取数据

    package TestDemo;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    
    
    
    
    public class TestDemo{
        
        public static void main(String[] args) throws Exception{
            //1.定义要输入的文件目录
            File file=new File("e:"+File.separator+"demo"+File.separator+"my.txt");
            //如果文件存在才可以进行读取
            if(file.exists()){//文件存在
                //2.使用InputStream进行读取
                InputStream input=new FileInputStream(file);
    
                //3.进行数据读取
                byte data[]=new byte[1024];//准备出一个1024的字节数组
                int len=input.read(data);//将读取的内容保存到字节数组中
    
                //4.关闭输入流
                input.close();
                System.out.println(new String(data,0,len));
            }
        }   
    
    }
    
    image.png

    范例:单个字节进行读取
    由于一个文件含有多个字节数据,如果要读取肯定要采用循环的方式完成,由于不确定循环次数,所以应该使用while循环完成,下面为了更好的演示出问题,使用do while与while两种方式实现。
    do while(掠过)
    while实现:(重点)

    package TestDemo;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    
    
    
    
    public class TestDemo{
        
        public static void main(String[] args) throws Exception{
            //1.定义要输入的文件目录
            File file=new File("e:"+File.separator+"demo"+File.separator+"my.txt");
            //如果文件存在才可以进行读取
            if(file.exists()){//文件存在
                //2.使用InputStream进行读取
                InputStream input=new FileInputStream(file);
    
                //3.进行数据读取
                byte data[]=new byte[1024];//准备出一个1024的字节数组
                int foot=0;//表示字节数组的操作角标
                int temp=0;//表示每次接收的字节数据
                while((temp=input.read())!=-1){
                    data[foot]=(byte) temp;
                    foot++;
                }
    
                //4.关闭输入流
                input.close();
                System.out.println(new String(data,0,foot));
            }
        }   
    
    }
    
    image.png

    此类数据读取的方式在以后的开发中是使用最多的情况。所以一定要掌握

    相关文章

      网友评论

          本文标题:*字节流与字符流3(InputStream)

          本文链接:https://www.haomeiwen.com/subject/lpgxsqtx.html