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()方法自行关闭串流,以释放与串流相依的系统资源。

点这里可以跳转到人工智能网站

发表评论