您的位置:首页 > 其它

InputStream用法

2015-07-14 10:52 274 查看
时今,程序的开发当中一直在用文件的读写,但是对于java当中输入流以及输出流只是会用不理解,一直以来想搞清楚其,但是一直没有执行(悲剧),今天早上抽出半个小时通过JDK
API1.6.0中文版帮助逐步的了解下字节输入流读取字节的方法;

下面就说说InputStream当中read()、read(byte[] b)、read(byte[]
b、int off 、int
len)的使用以及区别(以txt文本的复制为例通过代码以及注释说明):

一、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();

}

}

运行以上程序,则控制台的输出为:

如图片1

说明:我爱你中国为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();

[align=left] is.close();[/align]

}catch(Exception e){

e.printStackTrace();

}

}

运行上面的程序则控制台的输出为:

如图片2

说明:每次最多读取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);

}

[align=left] os.close();[/align]
[align=left] is.close();[/align]

}catch{

e.printStackTrace();

}

}

运行上面的程序控制台的输出为:

如图片3

说明:则一次性读取完成

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);

}

[align=left] os.close();[/align]
[align=left] is.close();[/align]

}catch{

e.printStackTrace();

}

}

说明:运行上面的程序控制台的输出为:

如图片4

则一次最多读取1024个字节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: