IO流
作者:互联网
一、流的基本分类
1.操作数据单位:字节流、字符流
2.数据的流向:输入流、输出流
3.流的角色:节点流、处理流
二、流的体系结构
抽象基类 节点流(或文件流) 缓冲流(处理流的一种)
InputStream FileInputStream BufferedInputStream
OutputStream FileOutputStream BufferedOutputStream
Reader FileReader BufferedReader
Writer FileWriter BufferedWriter
三、节点流
字符流适用于文本文件
1 import org.testng.annotations.Test; 2 3 import java.io.File; 4 import java.io.FileNotFoundException; 5 import java.io.FileReader; 6 import java.io.IOException; 7 8 public class TestFileReader { 9 10 public static void main(String[] args) throws IOException { 11 //1.实例化File类对象,指明要操作的文件 12 File file = new File("hello.txt"); 13 //2.提供具体的流 14 FileReader fr = new FileReader(file); 15 //3.数据的读入 16 int data = fr.read(); 17 while(data != -1){ 18 System.out.println((char)data); 19 data = fr.read(); 20 } 21 //4.流的关闭操作 22 fr.close(); 23 } 24 25 }
1 @Test 2 public void testFileWriter() throws IOException { 3 //1.实例化File类对象,指明要操作的文件 4 File file = new File("C:\\Users\\12582\\IdeaProjects\\untitled\\src\\hello1.txt"); 5 //2.提供具体的流 6 FileWriter fw = new FileWriter(file); 7 //3.数据的写入 8 fw.write("I have a dream!\n"); 9 fw.write("I have a dream!"); 10 //4.流的关闭操作 11 fw.close(); 12 }
注意:字符流( FileReader 、 FileWriter )不能处理图片,需要使用字节流( FileInputStream 、FileOutputStream )
字节流适用于非文本文件(图片、视频。。。)
四、缓冲流
1 import org.testng.annotations.Test; 2 3 import java.io.*; 4 5 public class BufferedStreamTest { 6 7 @Test 8 public void BufferedStreamTest() throws IOException { 9 //1.造文件 10 File srcFile = new File("C:\\Users\\12582\\IdeaProjects\\untitled\\src\\外国友人.jpg"); 11 File destFile = new File("C:\\Users\\12582\\IdeaProjects\\untitled\\src\\外国友人2.jpg"); 12 //2.造流 13 //2.1造节点流 14 FileInputStream fis = new FileInputStream((srcFile)); 15 FileOutputStream fos = new FileOutputStream(destFile); 16 //2.2造缓冲流 17 BufferedInputStream bis = new BufferedInputStream(fis); 18 BufferedOutputStream bos = new BufferedOutputStream(fos); 19 //3.复制的细节:读取、写入 20 byte[] buffer = new byte[10]; 21 int len; 22 while((len = bis.read(buffer)) != -1){ 23 bos.write(buffer, 0, len); 24 } 25 26 //4.资源关闭 27 //要求先关闭外层的流(缓冲流),再关闭内层的流(关闭外层流的时候,内层会自动关闭,所以可以省略不写) 28 bos.close(); 29 bis.close(); 30 31 } 32 }
标签:java,IO,FileReader,File,import,new,public 来源: https://www.cnblogs.com/zyx9710/p/16281695.html