Java基础进阶 IO流、字节流、字符流 、IO流的异常处理、属性集 D1900404

Java基础进阶 IO流、字节流、字符流 、IO流的异常处理、属性集

01.第一章:IO概述_IO流概述及分类:

1).字节流:以“字节”的方式操作数据的。可以读、写任何文件。
	A).输出流:OutputStream(抽象类)(三种输出的方法)
				1).write(int b):输出一个字节
				2).write(byte[] arr):输出一个字节数组。
				3).write(byte[] arr,int off,int len):输出字节数组的一部分。
				|--FileOutputStream(子类)
	
	B).输入流:InputStream(抽象类)
				|--FileInputStream(子类)
2).字符流:以“字符”的方式操作数组。只能读、写纯文本文件。
	A).输出流:Writer(抽象类)
			|--OutputStreamWriter(转换流)
				|--FileWriter(子类)
	B).输入流:Reader(抽象类)
			|--InputStreamReader(转换流)
				|--FileReader(子类)

02.第一章:字节流_输入流_InputStream的读取方法:

1).读取的方法:
1).int read():读取一个字节;
2).int read(byte[] byteArary):读取一个byte[]数组。
2).子类FileInputStream的使用:
1).构造方法:
1).FileInputStream(String filename):
2).FileInputStream(File filename):
注意:
1).构造时,文件必须存在,否则抛异常;
2).构造时,只能构造在文件上,不能构造在目录上。
3).示例代码:

public class Demo {
    public static void main(String[] args) throws Exception {
        //1.构造一个输入流
        InputStream in = new FileInputStream("demo01.txt");
        //2.读取--一次读取一个字节
        /*int b = 0;
        while((b = in.read()) != -1) {
            System.out.println("转转为字符:" + (char)b);
        }*/

        //读取--一次读取多个字节
        byte[] arr = new byte[3];
        int len = 0;
        while((len = in.read(arr)) != -1) {
            //使用byte[]数组构造一个字符串
            String str = new String(arr,0,len);
            System.out.println("转换为字符串:" + str);
        }
        //3.关闭流
        in.close();


    }
}

4).练习_文件复制:

public class Demo {
    public static void main(String[] args) throws Exception {
        //1.构造一个到源文件的输入流
        InputStream in = new FileInputStream("x.txt");
        //2.构造一个到目标文件的输出流
        OutputStream out = new FileOutputStream("a.txt");

        //3.一次读、写一个字节--慢
       /* int b = 0;
        while ((b = in.read()) != -1) {
            out.write(b);
        }*/

        //4.一次读、写一个字节数组--快
        byte[] byteArray = new byte[1024 ];
        int len = 0;
        while ((len = in.read(byteArray)) != -1) {
            out.write(byteArray,0,len);
        }
        out.close();
        in.close();
        System.out.println("复制完毕!");
    }
}

在这里插入图片描述


03.第三章:字符流_概述

1)."字符流"是读写“纯文本文件”。使用“字节流”只能一次读写一个字节,但对于其它国家的文字,很多都是两个、多个字节表示一个字符,这样使用“字节流”操作就很不方便,所以Java又提供了“字符流”。
2)."字符流"也是基于“字节流”的。

04.第三章:字符流_输出流_Writer的输出方法

1).五种输出的方法:
1).write(int c):输出一个字符。
2).write(char[] arr):输出一个字符数组;
3).write(char[] arr,int off,int len):输出字符数组的一部分;
4).write(String s):输出一个字符串。
5).write(String s,int off,int len):输出字符串的一部分。

2).子类FileWriter的构造方法:
1).FileWriter​(String fileName) 构造一个给定文件名的FileWriter对象。
2).FileWriter​(String fileName, boolean append) 构造一个FileWriter对象,
给出一个带有布尔值的文件名,表示是否附加写入的数据。
3).FileWriter​(File file) 给一个File对象构造一个FileWriter对象。
4).FileWriter​(File file, boolean append) 给一个File对象构造一个FileWriter对象。

3).示例代码:

扫描二维码关注公众号,回复: 5863435 查看本文章
public class Demo {
    public static void main(String[] args) throws IOException {
        //1.构造一个输出流
        FileWriter out = new FileWriter("demo03.txt");
        //2.输出
        //1).输出一个字符
        out.write(98);
        //2).输出一个字符数组
        char[] chArray = {'a', 'b', 'c', '你', '好'};
        out.write(chArray);
        //3).输出字符数组的一部分
        //只输出:你好
        out.write(chArray,3,2);

        //4).输出一个字符串【重点掌握】
        out.write("呵呵,我爱Java!");

        //5).输出字符串的一部分
        String str = "我爱Java";
        //只输出:Java
        out.write(str,2,4);
        //3.清理缓存
//        out.flush();//刷新缓存

        //4.关闭文件
        out.close();//相当于:flush() + close()
    }
}

在这里插入图片描述

05.第三章:字符流_输出流_Writer的追加写入及换行

1).追加写入:构造方法
FileWriter(String(File) name,boolean append):
第二个参数为true,即为:追加写入
2).换行:
out.write("\r\n");

06.第三章:字符流_输入流_Reader的读取的方法

1).Reader的读取的方法:(两种)
1).int read():读取一个字符;
2).int read(char[] chArray):读取一个字符数组

2).子类FileReader的构造方法:
1).FileReader(String fileName):
2).FileReader(File fileName):

3).示例代码:

public class Demo {
    public static void main(String[] args) throws Exception {
        //1.构造一个输入流
        FileReader in = new FileReader("demo04.txt");
        //2.一次读取一个字符
        /*int c = 0;
        while((c = in.read()) != -1) {
            System.out.println("转换为字符:" + (char)c);
        }*/

        //3.一次读取多个字符
        char[] chArray = new char[3];
        int len = 0;
        while ((len = in.read(chArray)) != -1) {
            System.out.println(new String(chArray,0,len));
        }
    }
}

07.第四章:IO异常的处理_JDK7前的处理方式

public static void main(String[] args) {
    FileWriter out = null;
    try {
        out = new FileWriter("demo05.txt");
        out.write("哈啰");

    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        if(out != null) {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

08.第四章:IO异常的处理_JDK7后的处理方式

public class Demo {
    public static void main(String[] args) {
        try(FileWriter out = new FileWriter("demo06.txt")){
            out.write("呵呵");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //当try...catch...执行完毕后,out会自动关闭。不需要我们自己关闭了
    }
}

小结字节流和字符流:

1).字节流:只要是复制文件,使用字节流
	A).输出流:OutputStream(抽象类)(三种输出的方法)
				1).write(int b):输出一个字节
				2).write(byte[] arr):输出字节数组
				3).write(byte[] arr,int off,int len):输出字节数组的一部分。
				|--FileOutputStream(子类)
	B).输入流:InputStream(抽象类)(两种读取的方法)
				1).int read():读取一个字节;
				2).int read(byte[] byteArray):读取一个字节数组。
				|--FileInputStream(子类)
2).字符流:操作纯文本文件,使用字符流。
	A).输出流:Writer(抽象类)(五种输出的方法)
					1).write(int c):输出一个字符
					2).write(char[] charr):输出字符数组
					3).write(char[] arr,int off,int len):输出字符数组的一部分
					4).write(String s):输出一个字符串。
					5).write(String s,int off,int len):输出字符串的一部分
			|--OutputStreamWriter(转换流--下次课讲)
				|--FileWriter(子类)
	B).输入流:Reader(抽象类)(两种读取的方法)
				1).int read():读取一个字符;
				2).int read(char[] chArray):读取一个字符数组。
		|--InputStreamReader(转换流--下次课讲)
			|--FileReader(子类)

09.第五章:属性集_Properties类概述

1).java.util.Properties(类):它是一个“Map”集合类,但他内部包含了一些和IO流结合使用的方法,
可以很方便的操作“配置文件”。

2).什么是“配置文件”:指程序在运行时存储的一些用户数据的文件。它就是纯文本文件。在世界范围内,
有一个对于配置文件的通用的规范,配置文件的内部格式:
配置文件.txt
--------------------------------------
名1 = 值
名2 = 值

名n = 值
由于这种结构非常匹配Map的结构,所有Java中提供了Map的类来结合IO流,操作这种配置文件。

10.第五章:属性集_Properties类与流相关的方法介绍

1).store(Writer out,String comm):将集合中的数据写入到配置文件;

2).load(Reader in):将文件中的数据读取到集合中。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xc965746550/article/details/89061632