第五章:IO流 (java.io包中)

发布于:2024-12-19 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、理解

        1. 简单而言:流就是内存与存储设备之间传输数据的通道、管道。

        2. 分类:

                (1) 按方向(以JVM虚拟机为参照物)【重点】  

                        输入流:将存储设备>中的内容读入到内存>中。  

                        输出流:将内存>中的内容写入到存储设备>中。

                (2) 按单位:  

                        字节流:以字节为单位,可以操作所有类型的文件。  

                        字符流:以字符为单位,只能操作文本类型的文件。

                (3) 按功能:  

                        节点流:具有基本的读写功能。  

                        过滤流:在节点流的基础上,增加新的功能。

二、字节流

        1. 父类:字节流的父类(抽象类):

                (1) InputStream:字节输入流

                        对应的操作为读操作  

                        功能方法:read方法

                (2) OutputStream:字节输出流

                         对应的操作为写操作

                        功能方法:write方法

        2. 字节节点流

                (1) FileOutputStream:字节节点输出流 、文件字节输出流  

                        构造方法:  

                                FileOutputStream fos = new FileOutputStream("D:\\test56/a.txt");  

                                参数:代表操作文件的路径,如果指定的文件夹不存在,则运行报错,

                                                错误信息为:            

                                                        java.io.FileNotFoundException: D:\test5\a.txt

                                                        (系统找不到指定的路径。);如果指定的文件不存在,

                                                                系统自动创建  

                                                        绝对路径:盘符:\\文件夹\\ 文件  

                                                        相对路径:文件夹/文件,默认在当前的项目中查找对

                                                                应的文件夹内容        

                                                        功能方法:      

                                                                write(int n):将单个字节写入文件中      

                                                                close():关闭流

                (2) FileInputStream:文件字节输入流

                        构造方法:      

                                FileInputStream fis = new FileInputStream("file/c.txt");      

                                参数说明:参数代表操作路径,如果指定的文件不存在,则运行报错,

                                              错误信息为:              

                                java.io.FileNotFoundException: file\c.txt (系统找不到指定的文件。)      

                        功能方法:        

                                int read():一次性读取一个字节内容,将读取的内容作为返回值返回,

                                                        达到文件尾部时,返回-1        

                                close():关闭流,释放资源

        3. 字节过滤流

                (1) 过滤流:BufferedOutputStream/BufferedInputStream

                        缓冲流,提高IO效率,减少访问磁盘的次数;

                        数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可以直接close。  

                        public class TestFileCopyBuffered {  

                        public static void main(String[] args) throws IOException {      

                                // 1. 创建文件字节输入流+输出流对象      

                                // (1) 创建文件节点流对象      

                                FileInputStream fis = new FileInputStream("D:\\test\\ph.mp4");      

                                // (2) 创建过滤流      

                                BufferedInputStream bis = new BufferedInputStream(fis);      

                                // 写文件      

                                FileOutputStream fos = new FileOutputStream("file/ph_copy.mp4");      

                                BufferedOutputStream bos = new BufferedOutputStream(fos);      

                                // 2. 边读边写      

                                while(true){          

                                        int n=bis.read();          

                                        if(n==-1) break;          

                                        bos.write(n);      

                                 }      

                                 // 3. 关闭流。释放资源      

                                bis.close();      

                                bos.close();  

                }

        }

                

                

                

                三 、 字 符 流

        1. 字 符 流 的 父 类 ( 抽 象 类 ):

                R e a d e r:字 符 输 入 流

                对 应 的 操 作 为 读 操 作

                功 能 方 法:r e a d 方 法

                W r i t e r : 字 符 输 出 流

                对 应 的 操 作 为 写 操 作

                功 能 方 法:w r i t e 方 法

        2. 文件字符流

                (1) FileWriter文件字符输出流,继承Writer中的方法:  

                        public void write(int n):将单个字符写入到文件中

                (2) FileReader文件字符输入流,继承Reader中的方法:  

                         public int read():一次读取一个字符的内容

        3. 字符过滤流

                (1) BufferedReader:  

                        功能方法,readLine():一次性读取一行内容,返回内容为String,

                                        读取达到尾部,返回-1

                (2) PrintWriter  

                        println(参数);

        4. 桥转换流

                InputStreamReader/OutputStreamWriter:桥转换流;设置 编解码格式

                

                

四、File类

        1. IO流:对文件中的内容进行操作。 File类:对文件自身进行操作,例如:删除文件,

                        文件重新命名等。

        2. 操作:

                public class TestFile {  

                        public static void main(String[] args) throws IOException {      

                                File file = new File("file/hh.txt");      

                                /*System.out.println(file.exists());      

                                file.createNewFile();*/      

                                if(file.exists()){          

                                        System.out.println("文件存在,则直接使用...");          

                                        FileInputStream fis = new FileInputStream(file);      

                                }else{          

                                        System.out.println("文件不存在,创建新的文件....");          

                                        file.createNewFile();

                                }

                }

}


网站公告

今日签到

点亮在社区的每一天
去签到