Java的InputStream和OutPutStream流输入与输出体会
来源:互联网 发布:js 设置radio checked 编辑:程序博客网 时间:2024/05/19 02:21
刚在学习Android时,看到拷贝的语句觉得很奇怪,
因为在引用时,使用的语句是public void CopyDB(InputStream inputStream,OutputStream outputStream)throws IOException{byte[] buffer=new byte[1024];int length;while((length=inputStream.read(buffer))>0){outputStream.write(buffer,0,length);}inputStream.close();outputStream.close();}
CopyDB(getBaseContext(),getAssets().open("mydb"),new FileOutputStream(dirPtah+"/MyDB")
总是看不明白为啥第二个参数里使用的是FileOutputStream而方法里参数是OutputStream呢?不是不一样吗?
学习了《Think in Java》后才知道,原来这叫做上溯造型,OutputStream是FileOutputStream的抽象基本类,不能用new,而FileOutputStream创建的句柄都可以使用OutputStream,然而他们就是通用的……
终于体会到一点Java的字节流和字符流的强大,都是继承于OutputStream/InputStream以及Reader/Writer,后面类可以上溯造型很多接口就可以通用了。
至于while里面的语句,还是要学习一下的。read的一个构造函数是这样的:
public int read(byte[] buffer) throws IOException它的返回值是int,返回当前buffer里实际读取的字节数,如果并未读取到数据,就会返回-1。
至于write的它的构造函数中一种形式是:
public void write(byte[] buffer,int offset,int count) throws IOException它会把buffer里从offset起数量为count的数据写入到对象里。
还有一个需要理解的是,使用read后,buffer里是有数据的(前提是还没写完),被write后,buffer里就空了,这才能使while形成一个循环。这里再往下可能就要理解到类似于C语言里的指针类的东西了吧。
阅读全文
0 0
- Java的InputStream和OutPutStream流输入与输出体会
- InputStream和OutputStream输入和输出流
- JAVA 的IO操作(二) 字节输出流和输入流:OutputStream和InputStream
- java中输入流和输出流的转换,inputstream 转换 outputstream
- io流的输入,字节流inputStream,outputStream的输入与输出,字符流的输入与输出 FileInputStream,FileOutputStream
- IO 输入与输出(3) -- 节点流之一InputStream和OutputStream
- InputStream和OutPutStream类定义的字节输入/输出流常用的方法
- Java 输出流转输入流的方法(OutputStream转InputStream,Writer转Reader)
- I学霸官方免费教程四十二 :Java流之字节流 输入流和输出流 InputStream和OutputStream
- java InputStream 和 OutputStream
- Java InputStream 和OutputStream
- JAVA中inputStream/OutputStream字节输入流、输出流读写文件
- java的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- JAVA的InputStream和OutputStream的理解
- 方法的值传递和引用传递
- 关于Paint了解text绘制时的基线位置关系/测量字符的宽度
- 用Total Control在电脑操作手机
- java正则表达式
- 是否同构
- Java的InputStream和OutPutStream流输入与输出体会
- 如何在linux中实现软件的开机自动启动
- Qt中使用new之后没有delete
- windows 7/10远程ubuntu 16.04LTS多用户访问
- 链表求和问题
- Golang 上传文件
- 【用Python学习Caffe】6. 权重预设、预训练及微调
- 测试菜鸟关于selenium的学习
- go 环境变量说明