今天,简单讲讲android里的



InputStream的read()读取文件的使用。

这两个方法在抽象类InputStream中都是作为抽象方法存在的,

JDK API中是这样描述两者的:

read() :  从输入流中读取数据的下一个字节,返回0到255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回-1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

read(byte[] b) :  从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。在输入数据可用、检测到文件末尾或者抛出异常前,此方法一直阻塞。

如果 b 的长度为 0,则不读取任何字节并返回 0;否则,尝试读取至少一个字节。如果因为流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少读取一个字节并将其存储在 b 中。

将读取的第一个字节存储在元素 b[0] 中,下一个存储在 b[1] 中,依次类推。读取的字节数最多等于b 的长度。设 k 为实际读取的字节数;这些字节将存储在 b[0] 到 b[k-1] 的元素中,不影响 b[k] 到b[b.length-1] 的元素。

由帮助文档中的解释可知,read()方法每次只能读取一个字节,所以也只能读取由ASCII码范围内的一些字符。这些字符主要用于显示现代英语和其他西欧语言。而对于汉字等unicode中的字符则不能正常读取。只能以乱码的形式显示。

对于read()方法的上述缺点,在read(byte[] b)中则得到了解决,就拿汉字来举例,一个汉字占有两个字节,则可以把参数数组b定义为大小为2的数组即可正常读取汉字了。当然b也可以定义为更大,比如如果b=new byte[4]的话,则每次可以读取两个汉字字符了,但是需要注意的是,如果此处定义b 的大小为3或7等奇数,则对于全是汉字的一篇文档则不能全部正常读写了。

下面用实例来演示一下二者的用法:

实例说明:类InputStreamTest.java 来演示read()方法的使用。类InputStreamTest1.java来演示read(byte[] b)的使用。两个类的主要任务都是通过文件输入流FileInputStream来读取文本文档yhw.txt中的内容,并且输出到控制台上显示。

先看一下yhw.txt文档的内容:

运行结果:3.1415926 No pains,No gains!!(乱码乱码)

InputStreamTest1.java代码如下:

运行结果:

3.1415926 No pains,No gains!! 最是那一低头的温柔,像一朵水莲花不胜凉风的娇羞。

这里还简单提一个函数:java.io.InputStream.read(byte[] b, int off, int len) 


java.io.InputStream.read(byte[] b, int off, int len) 方法从输入流读取转换为字节数组数据达到len个字节。如果参数len为0,则读取任何字节并返回0;否则有尝试读取至少一个字节。如果该流是在该文件的末尾,则返回的值为-1。


声明

以下是java.io.InputStream.read(byte[] b, int off, int len) 方法的声明:

public int read(byte[] b, int off, int len)

参数

  • b -- 目标字节数组。

  • off -- 在数组b在其中写入数据的起始位置的偏移。

  • len -- 要读取的字节数。

返回值

该方法返回读入缓冲区的总字节数,或如果没有更多的数据,因为数据流的末尾已到达返回-1。

异常

  • IOException -- 如果发生I/ O错误。

  • NullPointerException -- 如果b为 null.

  • IndexOutOfBoundsException -- 如果off为负,len为负,或len大于b.length - off。


这个函数可以首先新建一个比较大的数组,然后每次读取部分数据到数组里,再可以自己进行使用。这样可以避免多次读取时读取大小变化从而导致不停传进数组的问题。


android InputStream中read()与read(byte[] b)就讲完了。


就这么简单。

android InputStream中read()与read(byte[] b)相关推荐

  1. android开发 apk文件,android开发中,将数据库文件与APK一起发布?

    2015-11-11 回答 可以将xx.db文件复制到eclipse android工程中的res\raw目录中.所有在res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件. 使用op ...

  2. Android程序中读取使用已有的SQLite数据库

    方法一: 先在 Manifest 里添加权限: [java] view plaincopy print? <span style="font-size:12px;">& ...

  3. android下载通知栏,Android开发中实现下载文件通知栏显示进度条

    android开发中实现下载文件通知栏显示进度条. 1.使用asynctask异步任务实现,调用publishprogress()方法刷新进度来实现(已优化) public class myasync ...

  4. Android开发中保存数据的四种方法方法

    本文来自:安卓航班网 在Android开发中我们会接触到四种数据存储方式,每种存储方式都各有不同:以下安卓航班分别列举了Android开发中的不同存储方式的特点. 一,Preferences Pref ...

  5. 墨迹天气php,Android_仿墨迹天气在Android App中实现自定义zip皮肤更换,在这里谈一下墨迹天气的换肤 - phpStudy...

    仿墨迹天气在Android App中实现自定义zip皮肤更换 在这里谈一下墨迹天气的换肤实现方式,不过首先声明我只是通过反编译以及参考了一些网上其他资料的方式推测出的换肤原理, 在这里只供参考. 若大 ...

  6. android数据库导入,Android项目中如何导入数据库

    Android项目中如何导入数据库 发布时间:2020-11-24 16:43:28 来源:亿速云 阅读:110 作者:Leah Android项目中如何导入数据库?很多新手对此不是很清楚,为了帮助大 ...

  7. 整理了Android面中常见的62个Java知识点...

    这1个月有点忙,面试了10多个小厂和2.3个大厂,给我的感觉就是基础不牢,地动山摇.一般的面试的逻辑就是面向简历,深挖细节.字节的一面问了我一个半小时,反思一下,真的基础非常的重要,一些中小厂可能会额 ...

  8. Android面试中常见问题集锦

    Android面试中常会被问到的问题及解答方式: http://www.cnblogs.com/deman/p/5860976.html 1,PendingIntent 和Intent的区别: Pen ...

  9. fileoutputstream路径 android,Android编程中FileOutputStream与openFileOutput()的区别分析

    本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如 ...

最新文章

  1. php pdo 时间,php – 使用PDO执行时间记录查询 – 自动完成功能无效
  2. scala java funtion1_当我在ScalaIDE中运行代码时,为什么要获取`java.lang.NoClassDefFoundError:scala / Function1`?...
  3. numpy学习3:对象属性和基本数据类型
  4. 中国建筑设计行业投资发展形势及前景规模调查报告2022-2028年版
  5. kubeadm部署K8S集群并使用containerd做容器运行时
  6. Spring Cloud限流详解(内含源码)
  7. 电商促销海报BANNER设计要点,万能套用PSD分层模板,先收好!
  8. matlab编写文件格式,MATLAB程序设计教程(4)——MATLAB文件操作
  9. hadoop运维之jobtracker无故停止服务
  10. 管理mysql表知识点,数据库知识点整理(全)
  11. 推荐一篇我高中同班同学的文章[转载]
  12. 强大好看的dz论坛社区源码手机端
  13. TIA博途软件中安装鼎实GSD文件的方法
  14. 室内光缆与室外电力光缆特点简介
  15. JAVA模拟电影票房,Neo4j入门之中国电影票房排行浅析
  16. “三无”大学生,就业真难
  17. 【纪录】Proxychain4 使用部署以及利用 ss 加速下载操作
  18. css关键词:inherit、initial、overlay、revert、unset解释
  19. 前端开发面试知识点大纲
  20. 就业难,如何“解救”2022年的应届毕业生......

热门文章

  1. JPA实体关联关系,一对一以及转换器
  2. 论林耐斯-Linux系统的重要性
  3. Excel 数据分析技巧
  4. iphone 文件保存策略
  5. How to be a great Project Director
  6. Python从入门到项目实践(明日科技 吉林大学出版社)
  7. 关于Python的学习和认知---刘浩
  8. Thread和Runnable的区别和联系、多次start一个线程会怎么样
  9. LeetCode 79 Word Search(单词查找)
  10. 洛谷P2751 [USACO4.2]工序安排Job Processing