字节流的作用
流的本质就是数据的传输,对于IO流常见的作用包括文件复制、文件上传、文件下载,IO流可以被分类成字符流(纯文本文件使用)和字节流(万能的流),也可以被分为输出流(写)和输入流(读)(所谓的输入和输出是相对JVM或者控制台的输入输出)。
字节流的写数据&读数据(FileOutputStream & FileInputStream)
过程概述
首先创建对象
创建时若文件存在,将会清空文件
创建时若文件不存在,将会根据操作创建文件
调用对象的方法
关闭资源
f1.write("\r\n".getBytes()); //在windows中表示换行(Linux使用"\n".getBytes(),mac使用"\r".getBytes()表示换行)
具体代码示例
package IOStream_study;
import java.io.FileOutputStream;
import java.io.IOException;
public class demo001 {
public static void main(String[] args) throws IOException {
FileOutputStream f1 = new FileOutputStream("cc\\fos.txt");
byte[] bys = "abcdes".getBytes();
f1.write(bys,1,3);
f1.close();
}
}
/*
* 写数据的第二种方式
* byte[] bys1 = {1,2,3,4,a,b,c};
* byte[] bys2 = "abcde".getBytes();
* f1.write(bys1);
*
* 写数据的第三种方式,写入bys2的从0位及后面的三位
* f1.write(97);
* f1.write(98);
*
* 最后记得释放资源f1.close();
*/
package IOStream_study;
import java.io.FileInputStream;
import java.io.IOException;
public class demo002 {
public static void main(String[] args) throws IOException {
FileInputStream f1 = new FileInputStream("cc\\fos.txt");
int by;
while((by=f1.read())!=-1){
System.out.println((char)by);
}
f1.close();
}
}
package IOStream_study;
import java.io.FileOutputStream;
import java.io.IOException;
public class demo003 {
public static void main(String[] args) throws IOException {
FileOutputStream f1 = new FileOutputStream("cc\\fos.txt",true);
f1.write("\r\n".getBytes());
for(int i=0;i<10;i++){
f1.write("hello".getBytes());
f1.write("\r\n".getBytes());
}
f1.close();
}
}
应用举例复制文件(文本或者图片)
package IOStream_study;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class demo004 {
public static void main(String[] args) throws IOException {
FileInputStream f1 = new FileInputStream("cc\\Demo_Pecture.jpg");
FileOutputStream f2 = new FileOutputStream("cc\\Copy_Pecture.jpg");
byte[] bys = new byte[1024];
int len;
while((len=f1.read(bys))!=-1){
f2.write(bys,0,len);
}
f1.close();
f2.close();
}
}
字节缓冲流的作用
通过设置自己缓冲流,避免每次读取/写入一个字节导致底层系统的调用
字节缓冲流举例复制视频
package IOStream_study;
import java.io.*;
public class demo005 {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("cc\\Demo_video.mp4"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("cc\\copy_video.mp4"));
byte[] bys = new byte[1024];
int len;
while((len=bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bis.close();
bos.close();
}
}
补充知识(异常及异常处理)
注意区分Error(错误)和Exception(异常)
Error:开发过程中的语法或逻辑错误及JVM无法解释的严重错误
Exception:因为偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如空指针访问,试图读取不存在的文件,网络连接中断等等。Exception分为两类:运行时异常和编译时异常
异常处理
Java异常和异常处理(主要是try-catch的掌握)_java 发生异常进不去catch-CSDN博客
//try - catch - finally
try{
代码/可能有异常
}catch(Exception e){
//捕获异常
//1、当异常发生时
//2、系统将异常封装成Exception对象e,传递给catch
//3、得到异常对象后,程序员,自己处理
//4、注意,如果没有发生异常,catch代码块不执行
}finally{
//1、不管try代码块是否有异常发生,始终要执行finally
//2、所以,通常将释放资源的代码,放在finally
}