int read(byte[] b)
Reads up to b.length bytes of data from this input stream into an array of bytes.这是jdk文档!    从输入流读出byte数组长度数据   到b数组!

解决方案 »

  1.   

    这里只是一次读这么多,如果文件不止这么大,会分多次读取直到读到文件末尾
    比如下面的读取代码
    public static void main(String[] args) {
    try {
    // 创建文件输入流对象
    FileInputStream is = new FileInputStream("TestFile.txt");
    // 设定读取的字节数
    int n = 512;
    byte buffer[] = new byte[n];
    // 读取输入流
    while ((is.read(buffer, 0, n) != -1) && (n > 0)) {
    System.out.print(new String(buffer));
    }
    System.out.println();
    // 关闭输入流
    is.close();
    } catch (IOException ioe) {
    System.out.println(ioe);
    } catch (Exception e) {
    System.out.println(e);
    }
    }
      

  2.   


    这个不是推的,但是正常设置为1024或者512或者2048都可以,设置有时候我们可以完全设置为这个文件的大小(is.available()),如果设置为文件的大小、这样就可以一次性把内容都读到比特数组里
      

  3.   

    public static void main(String[] args) 
    {
    try {
    // 创建文件输入流对象
    FileInputStream is = new FileInputStream("TestFile.txt");
    // 设定读取的字节数
    int n = 0;
    byte[] buffer = new byte[1024];
    // 读取输入流
    while (-1 != (n = is.read(buffer, 0, buffer.length))) 
    {
    String temStr = new String(buffer,0,n); 
    System.out.print(temStr);
    }
    System.out.println();
    // 关闭输入流
    is.close();
    } catch (IOException ioe) {
    System.out.println(ioe);
    } catch (Exception e) {
    System.out.println(e);
    }
    }
    我就通俗点跟你说吧,这个读入字符串的过程就相当于字符串内容读取的过程,一个字符串就相当于一个大水缸里面的水,我们定义的数组就相当于一个盛水的容器,read就相当于一个用前面那个容器盛水的动作,每调用一次,我们就把水缸里的水转移一次,直到最后把水缸里的水全部转移完毕,这个字符读取过程就结束了。所以就像字符数组定义多大,定义大的话少读几次,小的话多多读几次,只是耗费系统资源不同而已,一般来说定义一个字节的整数倍,毕竟目前的所有字符都是以字节为最小单位的,这就是为什么一般定义成1024或者是2048了
      

  4.   


    这个不是推的,但是正常设置为1024或者512或者2048都可以,设置有时候我们可以完全设置为这个文件的大小(is.available()),如果设置为文件的大小、这样就可以一次性把内容都读到比特数组里请教下
    一次性把内容都读到比特数组里 会耗费系统资源吧 
    所以一般不这样设计 都是用1024 或者2048 来分布读入?
    可以这样理解吗
      

  5.   

    这个,我理解是看情况吧!比如这个文件本来就很小,比如只有5kb,我完全可以一次性把他读出来
    但是如果这个文件有个500M或者更大,一次读这么多数据到内存是不太好的做法,当然这个时候应该分批次读
    以上涉及的数据只是个人举个例子,具体多大文件一次性读出来好还是分批次读出来好,这个就不好说了,楼主可以针对某个情况做些测试
      

  6.   

    这个,我理解是看情况吧!比如这个文件本来就很小,比如只有5kb,我完全可以一次性把他读出来
    但是如果这个文件有个500M或者更大,一次读这么多数据到内存是不太好的做法,当然这个时候应该分批次读
    以上涉及的数据只是个人举个例子,具体多大文件一次性读出来好还是分批次读出来好,这个就不好说了,楼主可以针对某个情况做些测试恩好的 
    谢谢你。