转载自: http://www.apkbus.com/android-124993-1-1.html
主要是read(byte[] b、int off 、int len)方法中的例子,构造长度为流中实际数据的长度。
时今,程序的开发当中一直在用文件的读写,但是对于
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”);
i
nt 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();
is.close();
}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
//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();
}
}
运行上面的程序控制台的输出为:
如图片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);
}
os.close();
is.close();
}catch{
e.printStackTrace();
}
}
说明:运行上面的程序控制台的输出为:
如图片4
则一次最多读取
1024
个字节
来自群组: 农村创业者 |