博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FileInputStream类的使用初步
阅读量:6319 次
发布时间:2019-06-22

本文共 1553 字,大约阅读时间需要 5 分钟。

hot3.png

文件输入流java.io.FileInputStream类继承自字节输入流InputStream类,表示从文件中读取二进制数据到程序中:

public class FileInputStreamDemo01{public static void main(String args[]) throws Exception{//先向文件中写入数据,以便下面进行读取File f1=new File("e:"+File.separator+"test.doc");OutputStream out=new FileOutputStream(f1,true);String message2="\r\n浙江师范大学行知学院";byte[] b2=message2.getBytes();for(int i=0;i

因为开辟了1024字节的内存空间,但是写入的数据量显然没有1024字节。因此要是将这个1024大小的字节数组重新构建成字符串,这个字符串的长度或者说大小也将是1024字节。那么其中的多余字节就是由空格占位形成的。

运行效果如下:

显然我们并不希望看到这样的结果。那么如何解决?

修改如下:

public class FileInputStreamDemo02{public static void main(String args[]) throws Exception{File f1=new File("e:"+File.separator+"test.doc");OutputStream out=new FileOutputStream(f1,true);String message2="\r\n浙江师范大学行知学院";byte[] b2=message2.getBytes();for(int i=0;i

因为在重新构造字符串时是依据实际读取的字节大小构建的,因此新的字符串将不会有空格占位的情况。

上面的程序虽然解决了部分的问题,但在构建字节数组用于存储读取内容是开辟的内存空间是固定不变的,这样的设计极不合理。因为假如需要读取的数据量大于1024字节,这样1024字节之后的数据将无法读取。那么能不能按照文件大小构建字节数组呢?能!

实例3:

public class FileInputStreamDemo03{public static void main(String args[]) throws Exception{File f1=new File("e:"+File.separator+"test.doc");OutputStream out=new FileOutputStream(f1,true);String message2="\r\n浙江师范大学行知学院";byte[] b2=message2.getBytes();for(int i=0;i

这样的修改就能使内存资源得到最大限度的利用。

下面使用另一种读取数据的方式。

实例4:

public class FileInputStreamDemo04{public static void main(String args[]) throws Exception{File f1=new File("e:"+File.separator+"test.doc");OutputStream out=new FileOutputStream(f1,true);String message2="\r\n浙江师范大学行知学院";byte[] b2=message2.getBytes();for(int i=0;i

 

转载于:https://my.oschina.net/u/2331760/blog/678351

你可能感兴趣的文章
Factorialize a Number
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
自动生成四则运算题目
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
HTML5基础(二)
查看>>
ue4(c++) 按钮中的文字居中的问题
查看>>
Hadoop日记Day1---Hadoop介绍
查看>>
Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
查看>>
Echart:前端很好的数据图表展现工具+demo
查看>>
Linux VNC黑屏(转)
查看>>
Java反射简介
查看>>
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>