关于Java IO InputStream 的一点整理!
|
程序的开发其中一直在用文件的读写。可是对于java其中输入流以及输出流仅仅是会用不理解,一直以来想搞清楚其,可是一直没有运行(悲剧)。今天早上抽出半个小时通过JDK
API1.6.0中文版帮助逐步的了解下字节输入流读取字节的方法。
以下就说说InputStream其中read()、read(byte[] b)、read(byte[]
b、int off 、int len)的使用以及差别 一、read()方法:
public static void inputStreamRead1() {
try{
//构造一个输入流对象(读数据)test.txt文本的内容为:我爱你中国
InputStream is = new FileInputStream(“E:\\test.txt”);
//构造一个输出流对象(写数据)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
int len;//表示读入的数据(十进制的形式表示)
//FileInputStream能够使用read()方法一次读取一个字节,读入的数据以int类型返回,所以,你要是使用System.out.println()将数据显示出来的时候是以10进制的方式显示
while((len = is.read())!=-1){
System.out.println(“len=”+len);
os.write(len);
}
os.close();
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
执行以上程序,则控制台的输出为:
如图
![]() 说明:我爱你中国为5个汉字,5个汉字则为10个字节,而read()方法为一个字节一个字节的读,所以读取10次。而后len的值则为汉字的10进制表示
2、read(byte[] b)方法:
public static void inputStreamRead2(){
try{
//构造输入流对象(读数据)test.txt文本的内容为多个我爱你中国
InputStream is = new FileInputStream(“E:\\test.txt”);
//构造输出流对象(写数据)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//创建一个长度为1024的byte数组
byte[] b = new byte[1024];
//int len;表示成功读取的字节数的个数
//FileInputStream能够使用read(byte[] b )每次读取多个(b.length)字节数据(每次最多读取多少个)到byte数组其中
while((len = is.read(b))!=-1){
System.out.println(“len=”+len);
os.write(b);
}
os.close();
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
执行上面的程序则控制台的输出为:
如图
![]() 说明:每次最多读取1024个字节。非常明显使用这样的方式的效率要高于read()读取的效率,开发的过程其中也见识使用此方式进行读取。
3、read(byte[] b,int off,intlen):
1、public static void inputStreamRead3(){
try{
//构建输入流对象(读文件)
InputStream is = new FileInputStream(“E:\\test.txt”);
//构建输出流对象(写文件)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//声明一个大小为输入流大小的数组
byte[] b = new byte[is.available()];
int len = 0;//表示成功读取的字节数的个数
while(len<is.available()){
//read(byte[] b,int off, int len)表示从输入流其中最多将len个字节的数据读取到一个byte数组其中
len+=is.read(b, len, is.available() - len);
os.write(b);
}
os.close();
is.close();
}catch{
e.printStackTrace();
}
}
执行上面的程序控制台的输出为:
如图
![]() 说明:则一次性读取完毕
2、public static void inputStreamRead3(){
try{
//构建输入流对象(读文件)
InputStream is = new FileInputStream(“E:\\test.txt”);
//构建输出流对象(写文件)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//声明一个大小为输入流大小的数组
byte[] b = new byte[1024];
int len = 0;//表示成功读取的字节数的个数
while((len=is.read(b,len,1024))!=-1){
System.out.println(“len=”+len);
os.write(b);
}
os.close();
is.close();
}catch{
e.printStackTrace();
}
}
说明:执行上面的程序控制台的输出为:
如图
![]() 则一次最多读取1024个字节
|
关于Java IO InputStream 的一点整理!的更多相关文章
- struts2文件下载 出现Can not find a java.io.InputStream with the name的错误
成功代码: 前台界面jsp: <a style="text-decoration:none;" href="<%=path %>/main/frontN ...
- struts2文件下载出现Can not find a java.io.InputStream with the name的错误
今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...
- 【java】io流之字节输入流:java.io.InputStream类及子类java.io.FileInputStream
package 文件操作; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impor ...
- Error: Default interface methods are only supported starting with Android N (--min-api 24): java.io.InputStream org.apache.poi.sl.usermodel.ObjectShape.readObjectData()
项目运行的时候,如果报错 Error: Default interface methods are only supported starting with Android N (--min-api ...
- Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack.
1.错误描写叙述 八月 14, 2015 4:22:45 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error 严重: Excepti ...
- java io InputStream 转 byte
InputStream is ; ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] b = new byte[1024] ...
- Java IO流系统整理
Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流.输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位二 ...
- java IO文件读写例子(OutputStream,InputStream,Writer,Reader)
一,File创建文件 File file = new File("D:" + File.separator + "yi.txt"); 代码示例: package ...
- ava.io.InputStream & java.io.FileInputStream
java.io.InputStream & java.io.FileInputStream java.io.InputStream,这个抽象类是表示字节输入流的超类,这个抽象类的共性的方法有: ...
随机推荐
- GoldenGate 异常处理预案
异常处理一般步骤 如果GoldenGate复制出现异常,可以通过以下步骤尝试解决问题: 1) 通过ggsci>view report命令查找ERROR字样,确定错误原因并根据其信息 ...
- vscode 调试vue.js程序
npm install -g vue-cli //安装vue-clivue init webpack projectName //创建项目 1.Ctrl+~ 打开命令行 ...
- Linux权限管理(用户、组、文件管理)
一. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 1. 文件查看类命令cat,tac, head, tail, more, less, ls ,file: -ls : l ...
- 开源映射平台Mapzen加入了Linux基金会的项目
2019年1月29日,Linux基金会宣布,开源映射平台Mapzen现在是Linux基金会项目的一部分. Mapzen专注于地图显示的核心组件,如搜索和导航.它为开发人员提供了易于访问的开放软件和数据 ...
- 洛谷P1164 小A点菜 && caioj 1410 动态规划1:点菜(背包方案问题)
方程很简单 f[0] = 1 f[j] += f[j-w[i]] #include<cstdio> #define REP(i, a, b) for(int i = (a); i < ...
- [APIO2010]巡逻(树的直径)
[APIO2010]巡逻 题目描述 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到 ...
- unity gitignore
/[Ll]ibrary/ /[Tt]emp/ /[Oo]bj/ /[Bb]uild/ /[Bb]uilds/ /Assets/AssetStoreTools* # Autogenerated VS/M ...
- BNU 34974 MATLAB大法好
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=34974 MATLAB大法好 Time Limit: 8000ms Memory Limi ...
- [Python] Read and plot data from csv file
Install: pip install pandas pip install matplotlib # check out the doc from site import pandas as pd ...
- bzoj2843极地旅行社题解
题目大意 有n座小岛,当中每一个岛都有若干帝企鹅. 一開始岛与岛之间互不相连.有m个操作.各自是在两个岛之间修一座双向桥,若两岛已连通则不修并输出no,若不连通就输出yes并修建.改动一个岛上帝企鹅的 ...



