返回介绍

读取全部 readFully

发布于 2024-12-23 22:15:05 字数 883 浏览 0 评论 0 收藏 0

该方法会将文件中的所有内容转化为一个 byte 数组并且返回,所以不建议使用该方法读取大文件。

public byte[] readFully() throws IOException {
  FileInputStream stream = openRead();
  try {
    int pos = 0;
    int avail = stream.available();
    byte[] data = new byte[avail];
    	// 通过循环读取的方式将文件所有内容都装入 byte 数组中。
    while (true) {
      int amt = stream.read(data, pos, data.length-pos);
      //Log.i("foo", "Read " + amt + " bytes at " + pos
      //    + " of avail " + data.length);
      if (amt <= 0) {
        //Log.i("foo", "**** FINISHED READING: pos=" + pos
        //    + " len=" + data.length);
        return data;
      }
      pos += amt;
      avail = stream.available();
      if (avail > data.length-pos) {
        byte[] newData = new byte[pos+avail];
        System.arraycopy(data, 0, newData, 0, pos);
        data = newData;
      }
    }
  } finally {
    stream.close();
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文