一、流(IO)的定义:实现的是两个设备之间的数据传输;
补充:IO:input、output,设备:网络,磁盘,内存,控制台,键盘,文件
二、流的分类:
1)根据操作的方式分类:输入流和输出流
2)根据数据的类型分类:字节流(InputStream,OutputStream)和字符流(Reader,Writer),均以内存为参考
①字节流:传输的是字节,可以操作任意类型的数据的传入与传出(图片,音频,文本)
②字符流:传输的也试字节,好处是在字节的基础上融入了编码,操作更方便,只能传输文本类型的数据 (文本)
三、使用IO步骤:
public static void main(String[] args){
//创建文件
File file = new File(path);
//创建Writer子类,并关联文件
FileWriter fileWriter = new FileWriter(file);
//调用方法
fileWriter.writer("wangda");
//关闭流
fileWriter.close();
}
四、文件复制:
public void copy(){
FileWriter writer = new FileWriter(复制来的文件);
FileReader read = new FileReader(复制的源文件);
int num = 0;
char[] arr = new char[10];
while((num=read.read(arr))!=-1){
writer.writer(arr,0,num);
}
read.close();
writer.close();
}
五、缓冲流:字符的缓冲流(缓冲区),为了提高读写的能力,但是本身没有读写的能力,如果实现读写必须借助于字符流
(可以将缓冲流类比于催化剂或高速的小车)
1)缓冲流的分类:
①字符缓冲输入流:BufferedReader
②字符缓冲输出流:BufferedWriter
2)实例:
public static void main(String[] args){
FileWriter writer = new FileWriter(path);
BuffererWriter bWriter = new BufferedWriter(writer);
bWriter.writer("bingbing");
bWriter.close();
}
六、使用缓冲流实现文件的复制:
public void copy(){
BufferedReader read = new BufferedReader(new FileReader(path));
BufferedWriter writer = new BufferedWriter(new FileWriter(path));
String str = null;
while((str = read.readLine()!=null){
writer.writer(str);
}
read.close();
writer.close();
}
七、字节流实例:
1)文件的写出操作
public static void fileWriter(){
OutputStream out = new FileOutputStream(path);
out.writer("wangda".getBytes());
out.close();
}
2)文件对的读操作一个一个读
public static void fileRead1(){
InputStream input = new FileInputStream(path);
int num = 0;
while((num=input.read())!=-1){
System.out.print((char)num);
}
input.close();
}
3)一次读多个
public static void fileRead2(){
InputStream input = new FileInputStream(path);
int num = 0;
byte[] data = new byte[10];
while((num = input.read(data))!=-1){
System.out.print(new String(arr,0,num);
}
input.close();
}
4)一次读完所有的字节
public static void fileRead3(){
InputStream input = new FileInputStream(path);
int temp= input.available;
byte[] data = new byte[temp];
input.read(data);
System.out.print(new String(data));
input.close();
}