主要方法
●FileInputStream:
●public int read(byte[] b) // 从流中读取多个字节,将读到内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1。
●FileOutputStream:
●public void write(byte[] b) // 一次写多个字节,将b数组中所有字节,写入输出流。
1.创建FileInputStream
FileInputStream fis=new FileInputStream("D:\\aa.txt");//txt文件路径
2.读取文件
2.1 单个字节获取
// fis.read();
int data=0;
while ((data=fis.read())!=-1){
System.out.print((char)data);//获取的data为ASCII码,需要转换一下
}
运行结果:
2.2 多个字节获取
//fis.read(byte[] b);
byte[] buf=new byte[3];//3为缓冲区大小,一般来说缓冲区都会很大
int count=0;//字节个数
while((count=fis.read(buf))!=-1){
System.out.println(new String(buf,0,count));
System.out.println(count);
}
运行结果:
3.关闭FileInputStream流
fis.close();//关闭流
System.out.println();
System.out.println("执行完毕!");
4.创建FileOutputStream
文件路径后面不添加true就会把原文件数据覆盖。
//不添加,true就会把原文件数据覆盖
FileOutputStream fos=new FileOutputStream("d:\\bb.txt",true);
5.添加数据
//添加数据
fos.write(97);
fos.write('b');//自动转成int类型
fos.write('c');
//字符串输入添加
String str="hello,world!";
fos.write(str.getBytes());
6.关闭FileOutputStream及运行结果
//关闭
fos.close();
System.out.println("执行完毕!");
7.复制文件
7.1创建输入流与输出流
//原文件所在的路径:
FileInputStream fis=new FileInputStream("d:\\img01.jpg");
//复制后文件的路径及命名名称
FileOutputStream fos=new FileOutputStream("d:\\img02.jpg");
7.2一边读取文件,一边输出文件
//创建缓冲区
byte[] buf=new byte[1024];//传输时不超过1K
int count=0;//实际返回的字节个数
while ((count=fis.read(buf))!=-1){
fos.write(buf,0,count);//用write的重载方法写入数据
}
7.3关闭流
//3.关闭
fis.close();
fos.close();
System.out.println("复制完毕!");