关于Java IO InputStream 的一点整理!
来源:互联网 发布:淘宝上的腾讯视频会员 编辑:程序博客网 时间:2024/05/18 02:47
程序的开发当中一直在用文件的读写,但是对于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个字节
0 0
- 关于Java IO InputStream 的一点整理!
- 关于inputstream的一点问题
- 关于JAVA-IO的一点心得
- 关于java.io的一点总结
- java io InputStream Reader
- Java IO 操作 InputStream
- Java.IO.InputStream-OutputStream
- java io InputStream Reader
- java io之InputStream
- java.io.InputStream
- java IO之InputStream
- import java.io.InputStream;
- Java IO: InputStream
- Java IO - InputStream&OutputStream
- Java IO : InputStream、Reader
- java io -- InputStream
- java.io.InputStream
- 7. java.io.InputStream
- Linux SSH Sftp 限制用户访问权限
- 局域网代理环境下Ionic Framework新建App的方法
- insmod *.ko : version magic '2.6.27 mod_unload ARMv6 ' should be '2.6.27-svn53 mo
- 启动VMware出现报错:The VMware Authorization Service is not running
- IOS 图片合成
- 关于Java IO InputStream 的一点整理!
- GUI界的大战:QT VS GTK
- redis安装以及php扩展
- android 拍照后返回的data为空
- IOS 控件讲解
- swing——combobox如何获取数据库数据并显示
- linux内核Kmalloc分配内存需要注意的问题(GFP_KERNEL可能会造成内核调度错误)
- 如何编译OpenWrt
- libuv与libev的对比