输入流代码
FileInputStream fis = new FileInputStream("xxx.txt"); //创建流对象,关联xxx.txt文件
int b;
while((b = fis.read()) != -1) { //将每次读到的结果赋值给b
System.out.println(b);
}
fis.close();
输出流代码
FileOutputStream fos = new FileOutputStream("aaa.txt"); //创建流对象,关联aaa.txt
fos.write(100); //写出数据的时候会将前面24个0去掉,写出的是一个字节
fos.write(98);
fos.write(99);
fos.close(); //关闭流,释放资源
4.拷贝文件
1,逐个字节拷贝
FileInputStream fis = new FileInputStream("致青春.mp3"); //创建输入流对象,关联致青春.mp3
FileOutputStream fos = new FileOutputStream("copy.mp3"); //创建输出流对象,关联copy.mp3
int b;
while((b = fis.read()) != -1) { //将每次读到的赋值给b
fos.write(b); //将b中的字节写出去
}
fis.close(); //关流,释放资源
fos.close();
2,自定义数组拷贝
FileInputStream fis = new FileInputStream("致青春.mp3"); //创建输入流对象,关联致青春.mp3
FileOutputStream fos = new FileOutputStream("copy.mp3"); //创建输出流对象,关联copy.mp3
byte[] arr = new byte[1024 * 8]; //自定义数组
int len;
while((len = fis.read(arr)) != -1) { //将数据读到字节数组中
fos.write(arr, 0, len); //从字节数组中将数据写到文件上
//fos.write(arr);
}
fis.close(); //关流,释放资源
fos.close();
int len = read(arr);如果文件上有数据返回的就是读到有效的字节个数,如果文件上没有数据返回的就是-1
3,定义一个大数组拷贝,数组和文件的字节个数一样大
//fis.available();一次获取读的文件的大小
FileInputStream fis = new FileInputStream("致青春.mp3");
FileOutputStream fos = new FileOutputStream("copy.mp3");
byte[] arr = new byte[fis.available()]; //虽然可以拷贝,但是在开发时不建议,有可能会导致内存溢出
fis.read(arr);
fos.write(arr);
fis.close();
4,带缓冲区的拷贝
FileInputStream fis = new FileInputStream("致青春.mp3"); //创建输入流对象,关联致青春.mp3
BufferedInputStream bis = new BufferedInputStream(fis); //对fis进行包装,内置一个8192大小的字节数组
FileOutputStream fos = new FileOutputStream("copy.mp3"); //创建输出流对象,关联copy.mp3
BufferedOutputStream bos = new BufferedOutputStream(fos); //对fos进行包装,内置一个8192大小的字节数组
int b;
while((b = bis.read()) != -1) { //read一次会先将文件上的数据读到缓冲区中,再从缓冲区一个一个的赋值给b
bos.write(b); //write一次,是将b中的字节数据写到缓冲区,缓冲区写满再一次写到文件上
}
bis.close(); //只需要关掉包装后的即可
bos.close();
5.BufferedInputStream
FileInputStream fis = new FileInputStream("bbb.txt");
byte[] arr = new byte[4];
int len;
while((len = fis.read(arr)) != -1) {
System.out.println(new String(arr,0,len));
}
fis.close();
FileOutputStream fos = new FileOutputStream("bbb.txt");
fos.write("你要减肥,造吗".getBytes());
fos.close();
1.6版本及以前的标准的异常处理代码
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("aaa.txt");
fos = new FileOutputStream("bbb.txt");
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
}finally {
try {
if(fis != null)
fis.close();
} finally {
if(fos != null)
fos.close();
}
}
1.7版本的标准的异常处理代码
try(
FileInputStream fis = new FileInputStream("aaa.txt");
FileOutputStream fos = new FileOutputStream("bbb.txt");
MyClose mc = new MyClose();
){
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
}