输入输出流巩固理解
来源:互联网 发布:江南大学网络教育报名 编辑:程序博客网 时间:2024/04/28 13:27
为什么要巩固?值得一提的是输出在输入的配合,在输入中中,这个是指定文件,指定开始输入的下标,指定读取多少个。在输出中,也是一样,怎么个配合法?
一边输入读取,输出进行输出,什么意思,可用做到拷贝的效果,在file中有个改名的方法renameTo(),也是改路径,可用做到剪切的效果,把文件剪切走,而输入输出的配置,可用做到拷贝的效果。
一个文件是由头和内容组成,在计算机中只存储0和1,一个字节是八位,我们通过byte来读取文件,把文件的读一些,在输出一些,直到读取完毕,输出也就完毕,只要中途没有什么修改字节的操作。是可执行的。
怎么操作呢?输入和输出都是一样的,read(bye[],int,int),对文件来说,int是指定了那个位置读,读取多长来填充我的数组,write(byte[],int,int)对拷贝的新文件来说,byte[]就是数据源,it就是重这个数组多少位开始读,int读取多长。所以read读取多长,byte就可用输出多长。
read()读取了的就不会在读取,再一次调用read即使从之前的位置继续读取,除非在指定从哪里继续读取,wtite();对自己文件的输入是存在覆盖和追加两种情况,用true和false说明,在拷贝的时候,也是这种,把读取到的值,往后加。
你会问,不是说覆盖吗?怎么又变成往后加了,没错,确实在覆盖,但这是争对于每次程序运行来说,在每一次程序运行过程中,是不会存在覆盖,而是程序运行完毕后,再次运行,对比上一次,没有往后加而是覆盖。
所以这个加和覆盖是争对于每次程序运行时而定的,怎么判断读取是否结束?-1来判断,读取时候,不论是read(),还是read(byte[])返回-1即结束,
我觉得InputStream,read(byte[],int,int)不常用,因为定制位置来说麻烦,这样当然或许有这样特定的需求,不过没有read(bytr[])频繁,
我觉得OutputStream的wtite(byte[])不常用,因为读取在最后的时候是不会那么满的,就是会稍比申请的数组长度少一些,读到最后,所以需要wtite(vyte[],int,int)来定制,读取一点,我就给你取出这么多走,到最后即使你少一点,你读取多少,我给你带走多少。
因为你没有读取完返回的是即是读取长度,根据这长度可以知道,你最后少的时候,是读不够的,这个时候read(byte[])返回的即使读取了多少长度,在根据这个长度去输出。
一句话就是:输入:read(byte[]),输出:wtite(byte[],int,int),比较常用,输入输出配套,可做到拷贝的效果,因为你把整个文件的位,字节八位读取,都读取到了,同时又根据指定的内容一个个字节的输出。就相等于拷贝了。
- 输入输出流巩固理解
- Java 输入输出流巩固学习
- 输入输出流的理解
- 理解输入输出流
- 输入输出流简单理解
- 如何理解输入输出流
- IO输入输出流的理解
- 深入理解C++输入输出流
- android中的appwidget理解巩固
- 基础巩固--理解方法调用
- 我对c++输入输出流的理解
- 对输入输出流(OutputStream,InputStream)的理解
- Java IO 输入输出流的理解 1
- 输入输出流深入理解与应用
- Java 输入输出流的一些理解
- (原创) 巩固理解I2C协议(MCU,经验)
- 巩固理解I2C协议(MCU,经验)
- STM32输入输出模式理解
- Codeforces 875C National Property 乱搞
- oj 通话记录
- Oracle中时间字段作为筛选条件
- 设计模式【命令模式Command Pattern】
- No rule to make target '/usr/lib/x86_64-linux-gnu/libproj.so 解决方法
- 输入输出流巩固理解
- 【已解决】Scrapy安装出错:error: Unable to find vcvarsall.bat的解决方法
- 静态代理的意义和用法
- Test 2017.10.06
- 洛谷 P2543 [AHOI2004]奇怪的字符串
- GitHub上传文件不能超过100M的解决办法
- codeforces 349A
- 对内部类的应用
- (转)“跑批”发展编年史