IO流
1、IO流分类:
根据流向分:
输入流 读取数据 FileReader Reader
输出流 写出数据 FileWriter Writer
根据数据类型分:
字节流(直接写到文件中):
字节输入流 读取数据 InputStream(抽象类)
FileInputStream ,BufferedInputStream,
字节输出流 写出数据 OutputStream(抽象类)
FileOutputStream ,BufferedOutputStream,
字符流(首先写到缓冲区):
字符输入流 读取数据 Reader
字符输出流 写出数据 Writer
字符流能实现的功能字节流都能实现,反之不一定。如:图片,视频等二进制文件,只能使用字节流读写。
2、使用字符流读写文本文件:
1 import java.io.File; 2 import java.io.FileReader; 3 import java.io.FileWriter; 4 import java.io.IOException; 5 6 public class FlieCopy { 7 public static void main(String[] args) throws IOException { 8 File f=new File("C:\\Users\\Administrator\\Desktop\\Test\\a.txt"); 9 f.createNewFile(); 10 FileWriter fw=new FileWriter("C:\\Users\\Administrator\\Desktop\\Test\\a.txt"); 11 fw.write("床前明月光,\r\n疑是地上霜;\r\n举头望明月,\r\n低头思故乡"); 12 fw.flush(); 13 FileReader fr=new FileReader("C:\\Users\\Administrator\\Desktop\\Test\\a.txt"); 14 fw.close(); 15 fw=new FileWriter("C:\\Users\\Administrator\\Desktop\\Test\\c.txt"); 16 int len=0; 17 char[] chs=new char[1024]; 18 while((len=fr.read(chs))!=-1) { 19 fw.write(chs,0,len); 20 } 21 22 fr.close(); 23 fw.close(); 24 } 25 }
3、使用字节流复制图片
1 import java.io.FileInputStream; 2 import java.io.FileOutputStream; 3 import java.io.IOException; 4 5 public class CopImg { 6 public static void main(String[] args) throws IOException { 7 FileInputStream fin=new FileInputStream("C:\\Users\\Administrator\\Desktop\\Img.jpg"); 8 FileOutputStream fout=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\ImgCopy.jpg"); 9 int len=0; 10 byte[] buff=new byte[1024]; 11 while((len=fin.read(buff))!=-1) { 12 fout.write(buff, 0, len); 13 } 14 fin.close(); 15 fout.close(); 16 } 17 }