这个地方byte数字长度写死的是100,可以根据文件内容大小,自动生成数组长度吗?

这个地方byte数字长度写死的是100,可以根据文件内容大小,自动生成数组长度吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2022-04-13 10:31:55

同学你好,数组的长度并不是固定为100或自动生成的,而是由用户自定义的。

祝学习愉快~

  • 提问者 王小east #1

    是的,用户自己定义然后写死在代码中,这个数组长度能自动根据要读取的文件大小系统自己动态调整吗?还是说只能是用户定义多少就是多少呢?

    2022-04-13 22:18:55
  • 提问者 王小east #2

    在不知道要读取文件大小的情况下,这个数组长度又改如何定义呢?

    2022-04-13 22:20:09
  • 好帮手慕小小 回复 提问者 王小east #3

    同学你好,此数组的长度表示的是从该输入流读取最多b.length字节的数据到字节数组。是为了提高读取效率。默认情况下的read()方法是只能从输入流中读取一个字节长度的数据,使用了read(byte[] b)提高了每次从输入流中读取的字节数量,进而提高了读取效率。该字节数组并不是只能使用一次便不可再使用了,而是可以利用循环对文件反复对字节数组进行操作。

    https://img1.sycdn.imooc.com//climg/62577fe00916a4ec09170259.jpg

    例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    public void testFileInputOutputStream() {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            // 1.造文件
            File srcFile = new File("imooc.txt");
            File destFile = new File("imooc_copy.txt");
     
            // 2.造流
            fis = new FileInputStream(srcFile);
            fos = new FileOutputStream(destFile);
     
            // 3.复制的过程
            byte[] buffer = new byte[5];//长度可自定义
            int len;
            while ((len = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, len);
            }
        catch (IOException e) {
            e.printStackTrace();
        finally {
            if (fos != null) {
                // 4.关闭流
                try {
                    fos.close();
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fis != null) {
                try {
                    fis.close();
                catch (IOException e) {
                    e.printStackTrace();
                }
     
            }
        }
     
    }

    祝学习愉快~

    2022-04-14 10:33:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码