另附一张 一小部分 不完全 的思维导图

韩顺平java零基础课件 韩顺平java资料百度网盘_韩顺平java零基础课件

IO流

1.原理以及分类

1.1分类

四个抽象类:


1.2 文件和流


2.文件字节流:FileInputStream


2.1 案例


2.2 关键代码

在此省略了异常之类的代码 非完整代码 只截取关键部分代码

单个字节读取:慢(单个) 汉字乱码(字节)

FileInputSteam fis = new FileInputStream("filePath");
while(int readData = fis.read()!=-1){ sout((char) readData);}
finally{fis.close();}

字节数组读取:快一些 但因不是字符读取 仍有汉字乱码问题

byte[] buf = byte[8];
FileInputSteam fis = new FileInputStream("filePath");
while(readLen = fis.read(buf)!=-1){ sout(new String(buf,0,readLen));}
finally{fis.close();}

3. 文件字节流:FileOutputStream


3.1 案例


3.2 关键代码

FileOutputStream fos = new FileOutputStream(path);
String str = "hello word"
fos.write(str.getBytes());
fos.close();

4. 文件拷贝


4.1关键代码

String path = "D:/output",path1 = "D:/out";
FileInputStream fis = new FileInputStream(path);
FileOutputStream fos = new FileOutputStream(path1);
 //定义字节数组
            byte[] buf = new byte[1024];
            int readLen;//获得buf的真实长度
            while((readLen = fis.read(buf))!=-1){
                fos.write(buf,0,readLen);//一定要这么写
            }
//关闭
             if(fis!=null){
                fis.close();
            }
            if(fos!=null){
                fos.close();
            }

4.2完整代码

public class main {
    public static void main(String[] args) {
        String path = "D:/output",path1 = "D:/out";
        FileInputStream fis = null;
        FileOutputStream fos = null;

        try {
            fis = new FileInputStream(path);
            fos = new FileOutputStream(path1);
            //定义字节数组
            byte[] buf = new byte[1024];
            int readLen;
            while((readLen = fis.read(buf))!=-1){
                fos.write(buf,0,readLen);//一定要这么写
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try{
            if(fis!=null){
                fis.close();
            }
            if(fos!=null){
                fos.close();
            }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }
}

5.文件字符

5.1FileReader


5.1.1案例


5.1.2关键代码
String path = "";
FileReader fr = new FileReader(path);
//定义字符数组
		char[] cbuf = new char[9];
		int data;
		while((data=fr.read(cbuf)!=-1){
			sout(new String(cbuf,0,data));
		}
//关闭
		fr.close();

5.2FileWriter


5.2.1案例


5.2.2关键代码
String path = "";
FileWriter fw = new FileWriter(path);
	String str = "风雨之后 定见彩虹";
	fw.write(str);
//必须关闭或者flush() 不然写不进去
		fw.close();

6.节点流与处理流

基本概念:

韩顺平java零基础课件 韩顺平java资料百度网盘_java_02


韩顺平java零基础课件 韩顺平java资料百度网盘_韩顺平java零基础课件_03


韩顺平java零基础课件 韩顺平java资料百度网盘_后端_04

节点流:

韩顺平java零基础课件 韩顺平java资料百度网盘_处理流_05

处理流:

韩顺平java零基础课件 韩顺平java资料百度网盘_处理流_06

6.1处理流设计模式


6.2 字符处理流:BufferedReader BufferedWriter

注意:不要用字符处理流来处理一些二进制之之类的字节文件:如视频、音频等

韩顺平java零基础课件 韩顺平java资料百度网盘_开发语言_07

6.2.1案例


6.2.2关键代码
String path = "D:/output";
String path1 = "D:/output1";
BufferedWriter bwriter = new BufferedWriter(new FileWriter(path1));
BufferedReader breader = new BufferedReader(new FileReader(path));
        String line ;
        while((line = breader.readLine())!=null){
            bwriter.write(line);
            bwriter.newLine();//换行
        }
//关闭处理流即可(因为底层会关闭filewriter/filereader)
        bwriter.close();
        breader.close();
    }
}
6.2.3完整代码
package HomeWork0118.hw4;

import java.io.*;
public class main {
    public static void main(String[] args) throws IOException {
        String path = "D:/output";
        String path1 ="D:/output1";
        BufferedWriter bwriter = new BufferedWriter(new FileWriter(path1));
        BufferedReader breader = new BufferedReader(new FileReader(path));
        String line;
        while((line = breader.readLine())!=null){
            bwriter.write(line);
            bwriter.newLine();
        }
        breader.close();
        bwriter.close();
    }
}

6.3 字节处理流 :BufferedInputStream BufferedOutputStream


6.3.1案例


6.3.2关键代码
String path = "D:/output";
String path1 = "D:/output1";
BufferedOutputStream bos = new BufferedWriter(new FileOutputStream(path1));
BufferedInputStream bis = new BufferedReader(new FileInputStream(path));
//定义字节数组
		byte[] buf = new byte[1024];
		int readLen;
        while((readLen = bis.read(buf))!=-1){
            bos.write(buf,1,readLen);
        }
//关闭处理流即可(因为底层会关闭filewriter/filereader)
        bis.close();
        bos.close();
    }
}

7. 对象流与对象序列化

7.1 基本概念

韩顺平java零基础课件 韩顺平java资料百度网盘_韩顺平java零基础课件_08


韩顺平java零基础课件 韩顺平java资料百度网盘_开发语言_09


韩顺平java零基础课件 韩顺平java资料百度网盘_韩顺平java零基础课件_10

7.2 案例

ObjectOutputStream:

韩顺平java零基础课件 韩顺平java资料百度网盘_韩顺平java零基础课件_11

ObjectInputStream:

韩顺平java零基础课件 韩顺平java资料百度网盘_后端_12

韩顺平java零基础课件 韩顺平java资料百度网盘_后端_13

8. 转换流

8.1 基本概念

韩顺平java零基础课件 韩顺平java资料百度网盘_处理流_14


韩顺平java零基础课件 韩顺平java资料百度网盘_处理流_15


韩顺平java零基础课件 韩顺平java资料百度网盘_韩顺平java零基础课件_16

8.2 案例


9. Properties类

9.1 基本概念


9.2 案例



10. 打印流

10.1基本概念

PrintStream & PrintWriter

韩顺平java零基础课件 韩顺平java资料百度网盘_处理流_17


PrintStream


韩顺平java零基础课件 韩顺平java资料百度网盘_开发语言_18


PrintWriter


韩顺平java零基础课件 韩顺平java资料百度网盘_java_19