IO流
1,复制一个文本文件。

1,明确体系:
        源:InputStream ,Reader
        目的:OutputStream ,Writer
    2,明确数据:
        源:是纯文本吗?是 Reader
        目的;是纯文本吗?是 Writer
    3,明确设备:
        源:硬盘上的一个文件。    FileReader
        目的:硬盘上的一个文件。FileWriter
        FileReader fr = new FileReader("a.txt");
        FileWriter fw = new FileWriter("b.txt");
    4,需要额外功能吗?
        需要,高效,使用buffer
        BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
        BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));
        
        
2,读取键盘录入,将数据存储到一个文件中。
    1,明确体系:
        源:InputStream ,Reader
        目的:OutputStream ,Writer
    2,明确数据:
        源:是纯文本吗?是 Reader
        目的;是纯文本吗?是 Writer
    3,明确设备:
        源:键盘,System.in
        目的:硬盘,FileWriter
        InputStream in = System.in;
        FileWriter fw = new FileWriter("a.txt");
    4,需要额外功能吗?
        需要,因为源明确的体系时Reader。可是源的设备是System.in。
        所以为了方便于操作文本数据,将源转成字符流。需要转换流。InputStreamReader
        InputStreamReader isr = new InputStreamReader(System.in);
        FileWriter fw  = new FileWriter("a.txt");
        需要高效不?需要。Buffer
        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufw = new BufferedWriter(new FileWriter("a.txt"));

3,读取一个文本文件,将数据展现在控制台上。
        1,明确体系:
            源:InputStream ,Reader
            目的:OutputStream ,Writer
        2,明确数据:
            源:是纯文本吗?是 Reader
            目的;是纯文本吗?是 Writer
        3,明确设备:
            源:硬盘文件,FileReader。
            目的:控制台:System.out。
            FileReader fr = new FileReader("a.txt");
            OutputStream out = System.out;
        4,需要额外功能?
            因为源是文本数据,确定是Writer体系。所以为了方便操作字符数据,
            需要使用字符流,但是目的又是一个字节输出流。
            需要一个转换流,OutputStreamWriter
            FileReader fr = new FileReader("a.txt");
            OutputStreamWriter osw = new OutputStreamWriter(System.out);
            
            需要高效吗?需要。
            BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
            BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

4,读取键盘录入,将数据展现在控制台上。
        1,明确体系:
            源:InputStream ,Reader
            目的:OutputStream ,Writer
        2,明确数据:
            源:是纯文本吗?是 Reader
            目的;是纯文本吗?是 Writer
        3,明确设备:
            源:键盘:System.in
            目的:控制台:System.out
            InputStream in = System.in;
            OutputStream out = System.out;
        4,需要额外功能吗?
            因为处理的数据是文本数据,同时确定是字符流体系。
            为方便操作字符数据的可以将源和目的都转成字符流。使用转换流。
            为了提高效率,使用Buffer
            BufferedReader bufr  =new BufferedReader(new InputStreamReader(Systme.in));
            BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

5,读取一个文本文件,将文件按照指定的编码表UTF-8进行存储,保存到另一个文件中。
        1,明确体系:
            源:InputStream ,Reader
            目的:OutputStream ,Writer
        2,明确数据:
            源:是纯文本吗?是 Reader
            目的;是纯文本吗?是 Writer
    
        3,明确设备:
            源:硬盘:FileReader.
            目的:硬盘:FileWriter
            
            FileReader fr = new FileReader("a.txt");
            FileWriter fw = new FileWriter("b.txt");
        4,额外功能:
            注意:目的中虽然是一个文件,但是需要指定编码表。
            而直接操作文本文件的FileWriter本身内置的是本地默认码表。无法明确具体指定码表。
            这时就需要转换功能。OutputStreamWriter,而这个转换流需要接受一个字节输出流,而且
            对应的目的是一个文件。这时就使用字节输出流中的操作文件的流对象。FileOutputStream.
            FileReader fr = new FileReader("a.txt");            
            OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"),"UTF-8");
            
            需要高效吗?
            BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
            BufferedWriter bufw =
                new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt"),"UTF-8"));
    
        
            
目前为止,10个流对象重点掌握。
字符流:
FileReader
FileWriter

BufferedReader
BufferedWriter

InputStreamReader
OutputStreamWrier
字节流:

FileInputStream
FileOutputStream

BufferedInputStream
BufferedOutputStream

File类:
    用于将文件和文件夹封装成对象。
    
    1,创建。
        boolean createNewFile():如果该文件不存在,会创建,如果已存在,则不创建。不会像输出流一样会覆盖。        
        boolean mkdir();
        boolean mkdirs();
    2,删除。
        boolean delete();
        void deleteOnExit();
        
    3,获取:
        String getAbsolutePath();
        String getPath();
        String getParent();
        String getName();
        long length();
        long lastModified();
        
    
    4,判断:
        boolean exists();
        boolean isFile();
        boolean isDirectory();

IO中的其他功能流对象:

1,打印流:
    PrintStream:字节打印流。
        特点:
        1,构造函数接收File对象,字符串路径,字节输出流。意味着打印目的可以有很多。
        2,该对象具备特有的方法 打印方法 print println,可以打印任何类型的数据。
        3,特有的print方法可以保持任意类型数据表现形式的原样性,将数据输出到目的地。
            对于OutputStream父类中的write,是将数据的最低字节写出去。
            
    PrintWriter:字符打印流。
        特点:
        1,当操作的数据是字符时,可以选择PrintWriter,比PrintStream要方便。
        2,它的构造函数可以接收 File对象,字符串路径,字节输出流,字符输出流。
        3,构造函数中,如果参数是输出流,那么可以通过指定另一个参数true完成自动刷新,该true对println方法有效。

什么时候用?
当需要保证数据表现的原样性时,就可以使用打印流的打印方法来完成,这样更为方便。
保证原样性的原理:其实就是将数据变成字符串,在进行写入操作。

SequenceInputStream:
    特点:
    1,将多个字节读取流和并成一个读取流,将多个源合并成一个源,操作起来方便。
    2,需要的枚举接口可以通过Collections.enumeration(collection);

ObjectInputStream 和 ObjectOutputStream

对象的序列化和反序列化。

writeObject  readObject

Serializable标记接口

关键字:transient

RandomAccessFile:
    特点:
    1,即可读取,又可以写入。
    2,内部维护了一个大型的byte数组,通过对数组的操作完成读取和写入。
    3,通过getFilePointer方法获取指针的位置,还可以通过seek方法设置指针的位置。
    4,该对象的内容应该封装了字节输入流和字节输出流。
    5,该对象只能操作文件。
    
    通过seek方法操作指针,可以从这个数组中的任意位置上进行读和写
    可以完成对数据的修改。
    但是要注意:数据必须有规律。

管道流:需要和多线程技术相结合的流对象。
PipedOutputStream
PipedInputStream

用操作基本数据类型值的对象。
    DataInputStream
    DataOutputStream

设备是内存的流对象。
ByteArrayInputStream ByteArrayOutputStream
CharArrayReader  CharArrayWriter

IO流体系:

字符流:
Reader
    |--BufferedReader:
        |--LineNumberReader
    |--CharArrayReader
    |--StringReader
    |--InputStreamReaer
        |--FileReader

Writer
    |--BufferedWriter
    |--CharArrayWriter
    |--StringWriter
    |--OutputStreamWriter
        |--FileWriter
    |--PrintWriter

字节流:
InputStream
    |--FileInputStream:
    |--FilterInputStream
        |--BufferedInputStream
        |--DataInputStream
    |--ByteArrayInputStream
    |--ObjectInputStream
    |--SequenceInputStream
    |--PipedInputStream

OutputStream
    |--FileOutputStream
    |--FilterOutputStream
        |--BufferedOutputStream
        |--DataOutputStream
    |--ByteArrayOutputStream
    |--ObjectOutputStream
    |--PipedOutputStream
    |--PrintStream

Java笔记(day23-day26)的更多相关文章

  1. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  2. java笔记00-目录

    --2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:

  3. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  4. 转 Java笔记:Java内存模型

    Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...

  5. servlet(6) - servlet总结 - 小易Java笔记

    垂阅前必看: 这都是我总结的我觉得是学习servlet应该掌握的,我在学习期间也做了一个博客项目来让所学的知识得以巩固.下面就是博客项目链接.前面的servlet相关的笔记总汇,还有就是我把觉得在学习 ...

  6. Java笔记 —— 继承

    Java笔记 -- 继承 h2{ color: #4ABCDE; } a{ text-decoration: none!important; } a:hover{ color: red !import ...

  7. Java笔记 —— 方法重载和方法重写

    Java笔记 -- 方法重载和方法重写 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red ...

  8. Java笔记 —— 初始化

    Java笔记 -- 初始化 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red !impo ...

  9. Java笔记 —— this 关键字

    Java笔记 -- this 关键字 h2{ color: #4ABCDE; } a{ color: blue; text-decoration: none; } a:hover{ color: re ...

  10. Java 笔记 —— java 和 javac

    Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...

随机推荐

  1. matplotlib Transform

    2020-04-09 15:09:02 -- Edit by yangray Transform 类是TransformNode的子类,它是所有执行变换的TransformNode的实例的基类.所有非 ...

  2. springboot httpsession.getAtt....is null

    1.开始怀疑是 @RequestMapping("") public String loginIndex() { return "admin/login"; } ...

  3. Python 中如何查看进行反汇编

    dis模块       Python 反汇编是通过 dis 这个模块来查看的,一般有两种方式可以用来查看     方式一: 在命令行中使用 dis 查看   >>> def test ...

  4. Linux编辑利器-Vim

    在大学时代,Vim 的大名就已如雷贯耳,但由于它陡峭的学习曲线,一直望而却步.等真正开始学习之后,发现并没有想象中的复杂,也没有所谓的瓶颈,只要在实际写代码中强迫自己使用就可以了,无形中就会形成习惯. ...

  5. 从零开始学AB测试:基础篇

    什么是AB测试? 通俗点理解,AB测试就是比较两个东西好坏的一套方法,这种A和B的比较在我们的生活和人生中非常常见,所以不难理解.具体到AB测试这个概念,它和我们比较哪个梨更大.比较哪个美女更漂亮.比 ...

  6. Golang交付至Kubernetes

    目录 0.前言 1.Go服务构建 1.1.制作Go服务镜像底包 1.2.制作slave基础镜像底包 1.2.1.Golang镜像 1.2.2.Docker镜像 2.创建golang流水线 3.流水线构 ...

  7. SK-learn实现k近邻算法【准确率随k值的变化】-------莺尾花种类预测

    代码详解: from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split fr ...

  8. 前端基础-HTML(2)

    1. 什么是标签以及标签的分类: 在HTML页面中,带有“< >”符号的元素被称为HTML标签,如上节提到的 <HTML>.<head>.<body>都 ...

  9. php sprintf() 函数把格式化的字符串写入一个变量中。

    来源:https://blog.csdn.net/zxh1220/article/details/79709207 HP sprintf() 函数用到的参数 printf — 输出格式化字符串 spr ...

  10. from _sqlite3 import * ImportError: DLL load failed: 找不到指定的模块。

    *Error creating Django application: Error on python side. Exit code: 1, err: Traceback (most recent ...