请问java输入流中当文件大于byte数组长度的时候,该如何循环读取?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问java输入流中当文件大于byte数组长度的时候,该如何循环读取?相关的知识,希望对你有一定的参考价值。

如这个程序,假设我要读取的文件超过1KB了,我要如何每次读1KB,然后读完整个文件,使用read的返回值不为-1的话,这个while循环该放在哪?谢谢

byte[] data = new byte[1024];
int len = fis.read(data);
//循环将文件fileText.txt中的内容读取到字节数组中
StringBuilder sb = new StringBuilder();
sb.append(new String(data, 0, len));
while (len != -1) 
    len = fis.read(data);
    if (len != -1) 
        sb.append(new String(data, 0, len));
    

System.out.println(sb);

参考技术A read()方法返回参数是int型变量 等于-1就代表已经读完了不等于就,循环读

字符输入流读取文本文件ReaderFileReaderBufferedReader

字符输入流读取文本文件

1.Reader类(读取字符流的抽象类)

※Reader类的常用方法

方法名称

说明

int read()

从输入流中读取单个字符

int read(byte[] c)

从输入流中读取c .length长度的字符,保存到字节数组c中,返回实际读取的字符数

int read(byte[] c, int off , int len)

从输入流中读取最多len长度的字节,保存到字节数组c中,保存的位置从off开始,返回实际读取的字符数

void close()

关闭流

 2.字符输入流FileReader

  常用构造方法:

      ※  FileReader (String name)

            Reader fileObject=new FileReader (“C:\\test.txt”);

 3.使用FileReader读取文件步骤:

    1. Import java.io.*; (IOException, Reader, FileReader)

           2. Reader fileObject=new File Reader (“C:\\test.txt”);

           3.利用FileReader类的方法读取文本文件的数据

          int r= fileObject .read ();               //读取单个字符

      //将文件中的内容传入数组,以数组的形式读取出来

               char[ ] chars=new char[1024];

               int length= fileObject. Read( chars);

               System.out.println (Arrays. tostring (chars)) ;

 

 

 

 

    4. fileObject .close ();                   //关闭文件输入流对象

 

4.字符输入流BufferedReader

  常用构造方法:

      ※  BufferedReader (Reader in)

              Reader fileObject=new FileReader (“C:\\test.txt”);

                     BufferedReader br=new BufferedReader (BufferedReader);

5.使用BufferedReader读取文件步骤:

    1. Import java.io.*; (IOException, Reader, BufferedReader)

    2.创建一个BufferedReader对象

                      Reader fr=new FileReader (“C:\\test.txt”);

                      BufferedReader br=new BufferedReader (fr);

    3.利用BufferedReader类的方法读取文本文件的数据

          br. readLine ();      //读取一行数据,返回字符串

           【readLine()是BufferedReader类特有的方法】

    4. br .close ();

          fr .close ();

 

◎  FileReader和BufferedReader区别:

    BufferedReader类带有缓冲区,它可以先把一批数据读到缓冲区,接下来的读操作都是从缓冲区内获取数据,

  避免每次都从数据源读取数据进行字符编码转换,从而提高读取操作的效率。

以上是关于请问java输入流中当文件大于byte数组长度的时候,该如何循环读取?的主要内容,如果未能解决你的问题,请参考以下文章

字符输入流读取文本文件ReaderFileReaderBufferedReader

java中,ImputStream类中的read(byte []b)方法

字符流读写文本文件

JAVA文件读写操作

Java从内存流中读取byte数组

java中如何计算一个字符串的byte长度(一个汉字多少字符)