FileInputStream 之read(byte [] b)方法

FileInputStream是InputStream的子类,由名称上就可以知道, FileInputStream主要就是从指定的File中读取资料至目的地。

FileOutputStream是OutputStream的子类,顾名思义,FileOutputStream主要就是从来源地写入资料至指定的File中。

标准输入输出串流物件在程式一开始就会开启,但只有当您建立一个FileInputStream或FileOutputStream的实例时,实际的串流才会开启,而不使用串流时,也必须自行关闭串流,以释放与串流相依的系统资源。

下面这个程式可以复制档案,程式先从来源档案读取资料至一个位元缓冲区中,然后再将位元阵列的资料写入目的档案:
  • FileStreamDemo.java
package onlyfun.caterpillar;



import java.io.*; 



public class FileStreamDemo {

public static void main(String[] args) {

try { 

byte[] buffer = new byte[1024]; 



FileInputStream fileInputStream = 

new FileInputStream(new File(args[0])); 

FileOutputStream fileOutputStream = 

new FileOutputStream(new File(args[1])); 



System.out.println("复制档案:" + 

fileInputStream.available() + "位元组"); 

while(true) { // 从来源档案读取资料至缓冲区 

if(fileInputStream.available() < 1024) { 

int remain; 

while((remain = fileInputStream.read())

!= -1) {

fileOutputStream.write(remain); 

}

break; 

} 

else { 

fileInputStream.read(buffer); 

// 将阵列资料写入目的档案 

fileOutputStream.write(buffer); 

} 

} 



// 关闭串流 

fileInputStream.close(); 

fileOutputStream.close(); 



System.out.println("复制完成"); 

} 

catch(ArrayIndexOutOfBoundsException e) { 

System.out.println(

"using: java FileStreamDemo src des"); 

e.printStackTrace(); 

} 

catch(IOException e) { 

e.printStackTrace(); 

} 

}

}


这个程式示范了两个 read() 方法,一个可以读入指定长度的资料至阵列,一个一次可以读入一个位元组,每次读取之后,读取的指标都会往前进,您使用available()方法获得还有多少位元组可以读取;除了使用File来建立FileInputStream、FileOutputStream的实例之外,您也可以直接使用字串指定路径来建立。

不使用串流时,记得使用close()方法自行关闭串流,以释放与串流相依的系统资源。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值