概念:InputStream类字节输入流的跟,该类是一个抽象类,无法实例化。
功能方法:
FileInputStream类:
解析:FileInputStream类用于将硬盘数据读取到内存中的程序。该文件是否可以读取内容取决于操作系统环境。
构方法:
package day17;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class Demo4 {
public static void main(String[] args) throws FileNotFoundException {
//FileInputStream(String)该构造方法如果文件路径下的文件存在,则返回对象,
// 否则返回FileNotFoundException异常
FileInputStream in = new FileInputStream("文件地址");
System.out.println(in);
//FileInputStream(File)
InputStream in2 = new FileInputStream("File对象");
System.out.println(in2);//创建成功则返回地址。
}
}
功能方法(与InputStream类功能一致):
package day17;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo5 {
public static void main(String[] args) throws IOException {
//读取操作
FileInputStream file = new FileInputStream("文件地址");
//read()一个一个字节读取
int i= -1;
while((i=file.read())!=-1){
System.out.println((char)(i));
}
//read(byte[])一堆一堆读取,即多个或者整个文档一起读取。
//available()获取文件总数字节数。
byte [] bs = new byte[file.available()];
file.read(bs);
System.out.println(bs);
//问题:如果文件内容字节数量数据超大时,可能出现OutOfMemeroyError
//解决:读取合适一个英文大小的数组。
byte[] bs1 = new byte[1];
int ii=-1;
while((i=file.read(bs1))!=-1){
System.out.println(new String(bs,0,1));
//问题:如果把字节数组长度设置为1,不就是一个一个读吗?效率低
//解决:1024*倍
byte[] b = new byte[1024];
int iii=-1;
while((iii=file.read(b))!=-1){
System.out.println(new String(b,0,iii));
}
//问题:对于中英文混排的文本文件会出现乱码。
//解决:使用1、字符流(推荐)2、设置一个数组用与内容一样大。
file.close();//当使用完有以后要关闭流。
}
}
}
文本文件复制操作:
public class Demo6 {
public static void main(String[] args) throws IOException {
//复制文件:
FileInputStream in = new FileInputStream("文件地址");
FileOutputStream out = new FileOutputStream("需要复制到的文件地址");
int i =-1;//使用一个一个读取
while((i=in.read())!=-1){
out.write(i);
}
//一堆一堆读取
byte [] bs = new byte[1024];
int len = -1;
while ((len=in.read(bs))!=-1){
out.write(bs,0,len);
}
in.close();
out.close();
System.out.println("文件复制成功!");
}
}
非文本文件复制操作:
package day17;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo7 {
public static void main(String[] args) throws IOException {//创建时会出现异常需要声明异常,
FileInputStream in = new FileInputStream("需要复制文件的地址");
FileOutputStream out = new FileOutputStream("需要复制到的文件的地方");
//2一堆有一堆读取
byte [] bs = new byte [1024];
int len=- 1;
while((len = in.read(bs))!=-1){
out.write(bs,0,1);
}
in.close();
out.flush();
out.close();
System.out.println("文件复制成功!");
}