美文网首页Java
JavaSE总结(9)IO流(1)

JavaSE总结(9)IO流(1)

作者: 杨璐瑶 | 来源:发表于2019-05-18 12:46 被阅读0次

一、IO流:

IO流: input输入(流向内存) 读取数据

         output输出(流出内存) 写出数据

IO流作用

       可以将程序(内存)中的数据 写出硬盘上

       也可以将硬盘上文件中的数据 读取到程序(内存)中

IO流分类

按照操作的数据不同

   字节流

   每次操作字节,由于计算机中任何数据都是由字节构成的,所以字节流可以操作计算机中一切数据。

   文本 视频 音频 图片 压缩包....都可以使用字节流来操作

   字符流

   每次操作的是字符,只能操作文本文件。

   文本文件:用记事本打开能够看懂 不乱码的文件 .txt .html .css .java

   需要注意 word excel 不是文本文件

按照数据流向不同

       输入流

       输出流

    字节输入流

        InputStream  read  读字节

        FileInputStream

    字节输出流

        OutputStream write 写字节

        FileOutputStream

    字符输入流

       Reader  read 读字符

       FileReader

    字符输出流

       Writer  write 写字符

       FileWriter

    IO流的命名规则

       前半部分 说明这个流能够做什么

       后半部分 是这个流的父类是谁


二、java.io.OutputStream::

java.io.OutputStream  字节输出流的超类  抽象类

方法

   write(int b) 写一个字节

   write(byte[] bytes) 写一个字节数组

   write(byte[] bytes,int start ,int length) 写字节数组的一部分

   close() 关闭资源 因为读写操作调用了操作系统的功能 需要告知操作系统我完事了

常用子类

   FileOutputStream

       构造方法 绑定数据目的

           FileOutputStream(File file)

           FileOutputStream(String name)

           参数

               File对象 字符串路径

     如果没有指定的文件 则新建一个文件 如果指定位置的文件已经存在 则覆盖

1.创建字节输出流对象H

2.调用write方法

3.关闭资源


三、文件的续写和换行:

续写

FileOutputStream

构造方法

    FileOutputStream(String path,boolean append)

    FileOutputStream(File file,boolean append)

    boolean append: 默认值是false 不写默认是false 覆盖文件

如果值为true 则续写文件

换行

    就在数据前 或者 后 加上\r\n

    \r回车符

    \n 换行符

out.write("我的真心话\r\n".getBytes());

//换行写在引号里面


四、java.io.InputStream 字节输入流的超类 抽象类

方法

    int read() 读一个字节

    int read(byte[] bytes) 读一个字节数组

    close() 关闭资源

常用子类

    FileInputStream

    构造方法 绑定 数据源

            FileInputStream(String path)

            FileInputStream(File file)

    参数

            String路径

            File对象

1.创建字节输入流对象

2.调用read方法读数据

3.关闭资源

int read(byte[] bytes) 读一个字节数组

字节数组作用: 起到缓冲的作用 用来提高效率 保存读取到的数据

返回值:返回每次读取的有效字节数


五、复制:

先开后关,先关后开。

创建数据目的时,可以改复制的文件的名字。

字节数组复制,效率远远高于字节复制。一般数组的长度定义为【1024】,1024*100左右效率最高,再大的话创建数组也浪费时间。


六、java.io.Reader 字符输入流的超类 抽象类

方法

    int read() 读一个字符

    int read(char[] chs) 读字符数组

    close() 关闭资源

常用子类

    FileReader

        构造方法 绑定数据源

            FileReader(File file)

            FileReader(String path)


七、java.io.Writer 字符输出流的超类 抽象类

方法

    write(int c) 写一个字符

    write(char[] chs) 写一个字符数组

    write(char[] chs,int start,int length) 写字符数组的一部分

    write(String str) 写字符串

    flush() 刷新

常用子类

    FileWriter

        构造方法绑定数据目的

            FileWriter(String path)

            FileWriter(File file)

            FileWriter(String path,boolean append)

            FileWriter(File file,boolean append)


八、flush和close区别:

字符输出流 需要刷新 不刷新数据不进入到数据目的

flush就是刷新数据 将数据从缓冲区中刷新到数据目的 刷新完毕后还可以继续写数据


九、IO异常处理:

将close方法放到finally中

提升作用于范围  try外定义变量 try内给变量赋值

发现close方法有异常 try catch处理

由于两个close需要分开处理 第2个close放入到finally当中

需要进行非空判断 流对象 不为null才close

public static void main(String[] args) {

    FileReader f1=null;

    FileWriter f2=null;

    try {

        f1 = new FileReader("day10\\a.txt");

        f2 = new FileWriter("day10\\b.txt");

        int len;

        char[]arr=new char[1024];

        while ((len=f1.read(arr))!=-1){

            f2.write(new String(arr,0,len));

        }

    } catch (FileNotFoundException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();

    }finally {

        try {

            if (f2!=null) {

                f2.close();

            }

        } catch (IOException e) {

            e.printStackTrace();

        }finally {

            try {

                if (f1!=null) {

                    f1.close();

                }

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

}


十、java.util.Properties:

特点

  1.实现了Map接口 是一个双列集合 Map中的方法都可以使用

  2.没有泛型 键 是String类型  值 也是String类型

  3.唯一一个能够和IO直接结合使用的集合

方法

    setProperty(String key ,String value) 添加数据 相当于  put(K key,V value)

    getProperty(String key) 根据键找值 相当于 get(Object key)

    Set<String> stringPropertyNames() 获取所有键的set集合 相当于 keySet()


和IO流结合使用

方法

    load(InputStream in) 将文件中的键值对加载到集合中

    参数

        InputStream in:字节输入流的超类  抽象类

                        可以传入其任意子类对象 FileInputStream

    load(Reader r)将文件中的键值对加载到集合中

    参数

        Reader r:字符输入流的超类 抽象类

                可以传入其任意子类对象 FileReader

文本中的数据,必须是键值对形式,可以使用空格、等号、冒号等符号分隔。

相关文章

  • JavaSE总结(9)IO流(1)

    一、IO流: IO流: input输入(流向内存) 读取数据 output输出(流出内存) 写出数据 IO...

  • JavaSE总结(10)IO流(2)

    一、java.io.BufferedOutputStream extends OutputStream 字节输出缓...

  • JavaSE笔记-IO流

    Java中常见的IO流有关的类有如下: 字节流 InputStream 字节输入流的基类(抽象) OutputSt...

  • javaSe-IO流

    为什么称为流?所有数据对于计算机来说都是以细化的小单位存储的,所以让他们一起输入输出就像流水一样,一股数据才是一个...

  • JavaSE学习笔记——IO流

    java.io包File类:Java程序中的一个对象,对应着硬盘中的一个文件或者网络中的一个资源。File fil...

  • 2020-10-31-Java-复习44(java基础知识)

    注意javase 中的对象理解 io流 反射机制 1.java 和 C++ 区别 都是面向对象的语言,都支持封...

  • 【014期】JavaSE面试题(十四):基本IO流

    开篇介绍 大家好,我是Java面试题库的提裤姐,今天这篇是JavaSE系列的第十四篇,主要总结了Java中的IO流...

  • javase part21 IO流

    在计算机中文件的分类 二进制文件文本文件 在java中流的分类 字节流:操作二进制文件字符流: 操作文本文件 流:...

  • JavaSE进阶九 IO流二

    File类 File类和四大家族没有关系,所以File类不能完成文件的读和写。 File对象代表什么?文件和目录路...

  • JavaSE进阶九 IO流一

    1,IO流的概述 IO流,什么是IO? I:Input O:Output 通过IO可以完成硬盘文件的读和写。...

网友评论

    本文标题:JavaSE总结(9)IO流(1)

    本文链接:https://www.haomeiwen.com/subject/goazaqtx.html