ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IO流

2022-05-17 17:31:39  阅读:186  来源: 互联网

标签:java IO FileReader File import new public


一、流的基本分类

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有