io流:就是一根吸管,插入后,可以操作目标文件
io流的分类:
按方向:输入,输出
按大小:字节,字符
按处理方式:
文件字节流
先将文件中的内容导入到程序中来
一个字符等于两个字节,所以是16位
package com.bjsxt.test01;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
//文件----->程序
//1.确定一个文件
File f = new File("D:\\a.txt");//程序连接文件
//2.将“一根管”插入源文件中去
FileInputStream fis = new FileInputStream(f);
//System.out.println(fis.available());//对文件大小进行评估--------15字节
//3.开始“动作”
byte[] b = new byte[8];//定义缓冲数组,数组长度为8,下面就是8个8个读字节
int n = fis.read(b);//返回数组中占用的数量 这里的read方法可以使用数组传参,不传参就是一个一个读字节,传数组长度为8的数组就是8个8个读字节
while(n!=-1){
//System.out.println(n);
for (int i = 0; i <=n-1; i++) {
System.out.println(b[i]);//这个循环用来查看数组里面的元素
}
n=fis.read(b);
}
//4.关闭流
fis.close();
}
}
package com.bjsxt.test01;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test3 {
public static void main(String[] args) throws IOException {
//程序--->文件
//1.确定目标文件
File f = new File("D:\\a\\b.txt");
//2.将一个吸管插入目标文件中
FileOutputStream fos = new FileOutputStream(f,true);//加true就是在原来的内容上进行追加,不加就是覆盖原来的内容
//3.给一个字符串
String str=" 附加:abc你好";
//4.开始动作
byte[] bytes = str.getBytes();
/*
for (byte b : bytes) {
fos.write(b);
}
*/
fos.write(bytes);//这个可以代替上面注释的代码,而且更快,上面哪个是一个一个往外输
//5.关闭流
fos.close();
}
}
package com.bjsxt.test02;
import java.io.*;
public class Test01 {
public static void main(String[] args) throws IOException {
//1.确定源文件
File f1 = new File("D:\\a\\b.txt");
//2.确定目标文件
File f2 = new File("D:\\a\\a.txt");
//3.将一根管插入源文件中
FileInputStream fis = new FileInputStream(f1);
//4.将一根管插入目标文件中
FileOutputStream fos = new FileOutputStream(f2);
//5.开始动作
int n = fis.read();
while(n!=-1){//-1就是结尾
fos.write(n);
n=fis.read();
}
//6.关闭流
fos.close();
fis.close();
}
}
效率高的方法
注意:只往出写下标为[0,len)的数组,这是数组中的有效数组,不写无效的元素
package com.bjsxt.test02;
import java.io.*;
public class Test02 {
public static void main(String[] args) throws IOException {
//1.确定源文件
File f1 = new File("D:\\a\\b.txt");
//2.确定目标文件
File f2 = new File("D:\\a\\a.txt");
//3.将一根管插入源文件中
FileInputStream fis = new FileInputStream(f1);
//4.将一根管插入目标文件中
FileOutputStream fos = new FileOutputStream(f2);
//5.开始动作
byte[] b = new byte[6];
int len = fis.read(b);//len是数组中占用的有效长度
while(len!=-1){
fos.write(b,0,len);//把长度为6的数组中下标【0,len)这个位置的写出去
len = fis.read(b);
}
//6.关闭流
fos.close();
fis.close();
}
}
原文:https://www.cnblogs.com/H-scholar/p/14553258.html