recherche

Maison  >  Questions et réponses  >  le corps du texte

java - bufferedinputstream也需要指定一个数组长度呀?并没有什么用呀?

他与fileinputstream 的区别是什么呀?他不是自带缓冲区吗?为什么还需要指定一个byte数组?

PHP中文网PHP中文网2822 Il y a quelques jours721

répondre à tous(3)je répondrai

  • 阿神

    阿神2017-04-17 17:50:10

    Son cache et votre propre cache ne sont pas le même concept. Le processus général est le suivant.

    Lors de l'utilisation d'inputstream sans mise en cache

    Chaque fois que vous lisez, le système effectue une opération de lecture pour lire les données. Si vous spécifiez un octet à lire, il lira un octet, si vous spécifiez un tableau, il lira un tableau Le. différence entre votre programme et les données L'efficacité de la lecture a une excellente relation.

    et lors de l'utilisation de bufferedinputstream, cela ressemble à ceci

    Lorsque vous créez bufferedinputstream, il lira immédiatement les données et les mettra dans la mémoire gérée par jvm
    A chaque fois que vous les lisez, il n'y retournera plus. . La lecture depuis le système le lira depuis la mémoire. Données , puis déterminez s'il reste beaucoup de choses dans la mémoire. Sinon, il demandera au système de lire l'opération. Que vous lisiez un octet ou un tableau, le système ne le fera pas nécessairement <🎜. > Fera fonctionner le disque dur.
    La corrélation entre l'efficacité de votre programme et la lecture des données est très faible.

    Pensez-y sous un autre angle,

    Si vous utilisez un flux sans buffer, ouvrez le fichier puis fermez-le immédiatement, le système
    ne fera aucun appel de données, et la fermeture sera exécuté rapidement. Et si vous ouvrez le fichier avec un flux tamponné, même s'il est fermé immédiatement sans lecture, la fermeture ne sera pas exécutée immédiatement, et le système
    a déjà lu une partie des données dans la mémoire , ce qui sera moins efficace que d'utiliser sans tampon.

    Bien sûr, personne ne s'ennuierait au point de créer un flux puis de le fermer sans le lire, n'est-ce pas ?

    répondre
    0
  • PHPz

    PHPz2017-04-17 17:50:10

    Il n'y a aucune relation entre la mise en mémoire tampon et l'utilisation de tableaux pour recevoir du contenu. Cela ne signifie pas qu'avec la mise en mémoire tampon, il n'est pas nécessaire que les tableaux reçoivent du contenu.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:50:10

    Parce que nous espérons réutiliser cet octet[], sinon face à une transmission d'E/S de flux de données volumineux, vous constaterez que YGC sera très heureux

    répondre
    0
  • Annulerrépondre