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个字节
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个字节
相关文章推荐
- java学习路线分享,让你少走弯路
- Android签名功能的实现
- 技术文档博客集锦
- Tesseract 源码分析
- SQL Server执行计划的理解
- python里的del变量无法立刻释放内存的解决办法
- [solaris]odbc-oracle,简单测试
- su && su - && sudo
- combox绑定枚举和读取枚举
- 3.创建一个20个大小的随机数组,找出这组数组的最大值和最小值, 并且标出最大数和最小值的位置
- 关于WCF服务的使用(非常详细的步骤)
- Python实现查找系统盘中需要找的字符
- 苹果垄断手机市场92%利润 通吃PC市场50%利润
- Android 常用动画之RotateAnimation
- xcode6.1调试的时候有时参数都为nil怎么解决?
- extern与头文件(*.h)的区别和联系 和学习体会
- [管理篇]VMWare搭建Openstack——Cinder完成对云硬盘的扩容
- iOS百度地图开发笔记(一)
- Source Insight 3 密钥/许可证/注册码
- POJ-1163-The Triangle (动态规划1)