IO流知识点总结

IO流的概念和分类

概念:IO流——“I”是Input,即输入;“O”是Output,即输出;“流”是数据传输。

分类:(1)按照数据流向分:①输入流:读数据;②输出流:写数据。
           (2)按照处理数据类型分:①字节流:Input Stream/Output Stream ;不能读出来;②字符流:Reader/Writer; 可以读出来。

1. 字节流

1.1 字节流抽象基类

(1)InputStream:这个抽象类是表示字节输入流的所有类的超类。

(2)OutputStream:这个抽象类是表示字节输出流的所有类的超类。

(3)子类名特点:子类名称都是以其父类名作为子类名的后缀。

1.2 字节输出流写数据的三种方式

(1)void write(int b);       将指定的字节写入此文件输出流 一次写一个字节数据。

(2)void write(byte[ ] b);     将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据。

(3)void write(byte[] b, int off, int len);       将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据。

1.3 字节输出流写数据的步骤

(1)创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)。

(2)调用字节输出流对象的写数据方法。

(3)释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)。’

具体代码:(我创建在D盘中的txt文件)

public class FileOutputStreamDemo01 {
    public static void main(String[] args) throws IOException {
        // 创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("D:\\abc\\fos.txt");

        // 调用系统功能创建了文件
        // 创建了字节输出流对象
        // 让字节输出流对象指向创建好的文件
        //
        // void write(int b)
        // 将指定的字节写入此文件输出流
        fos.write(97);

        // 最后都要释放资源
        // 关闭此文件输出流并释放与此流相关联的任何系统资源
        fos.close();
    }
}

1.4 字节输出流写数据的异常处理

try{
    可能出现异常的代码;
}catch(异常类名 变量名){
    异常的处理代码;
}finally{
    执行所有清除操作;
}

具体代码:

public class FileOutputStreamDemo04 {
    public static void main(String[] args) {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream("D:\\abc\\fos.txt");
            fos.write("hello".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 加入finally来实现释放资源
        finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

1.5 字节输入流读数据
 

public class FileInputStreamDemo01 {
    public static void main(String[] args) throws IOException {
        // 创建字节输入流对象
        FileInputStream fis = new FileInputStream("d:\\abc\\fos.txt");

        int b;
        //
        // fis.read():读数据
        // b=fis.read():把读取到的数据赋值给by
        // b != -1:判断读取到的数据是否是-1
        //
        while ((b = fis.read()) != -1) {
            System.out.print((char) b);
        }
        // 释放资源
        fis.close();
    }
}

1.6 字节缓冲流

(1)BufferedOutputStream(OutputStream out);     创建字节缓冲输出流对象 。

(2)BufferedInputStream(InputStream in);       创建字节缓冲输入流对象。

2. 字符流

2.1 字符输出流写数据的五种方式

(1)void write(int c);      写一个字符。

(2)void write(char[] cbuf);      写入一个字符数组。

(3)void write(char[] cbuf, int off, int len);        写入字符数组的一部分。

(4)void write(String str);        写一个字符串。

(5)void write(String str, int off, int len);        写一个字符串的一部分。

2.2 字符输入流读数据的两种方式

(1)int read();          一次读一个字符数据。

(2)int read(char[] cbuf) ;         一次读一个字符数组数据 。

具体代码:

public class InputStreamReaderDemo {
    public static void main(String[] args) throws IOException {
		FileInputStream in = new FileInputStream("d:\\abc\\osw.txt");
		InputStreamReader isr = new InputStreamReader(in);		
		// 一次读一个字符数组数据
		char[] chs = new char[1024];
		int len;
		while ((len = isr.read(chs)) != -1) {
			System.out.print(new String(chs, 0, len));
		}
		// 释放资源
		isr.close();
	}
}

2.3 字符缓冲流

(1)BufferedWriter(Writer out);       创建字符缓冲输出流对象。

(2)BufferedReader(Reader in);        创建字符缓冲输入流对象。

3. 小结

3.1 字节流

3.2 字符流

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,作为文本AI助手,我无法绘制思维导图。但是,我可以为您提供一个简要的java IO流知识点总结Java IO流Java中用于处理输入和输出的机制。它提供了一种有效的方式来读取和写入数据,以及与文件、网络和其他设备进行交互。 Java IO流包括字节流和字符流两种类型。字节流以字节为单位进行操作,适用于处理二进制数据。而字符流以字符为单位进行操作,适用于处理文本数据。 常用的字节流包括InputStream和OutputStream类,用于读取和写入字节数据。常用的字符流包括Reader和Writer类,用于读取和写入字符数据。可以通过使用字节流和字符流的组合来实现不同类型数据的读写操作。 在Java IO流中,还有一些特殊的流,如缓冲流、转换流、对象流等。缓冲流提供了缓冲区来提高IO性能。转换流用于处理字符编码和解码。对象流用于对Java对象进行读写操作。 此外,Java IO流还包括一些常用的类和方法,如File类用于处理文件和目录,RandomAccessFile类用于对文件进行随机访问,FileInputStream和FileOutputStream类用于读写文件等。 通过组合和使用不同类型的流和类,您可以实现各种复杂的IO操作,如读写文件、网络通信、序列化对象等。 希望这个简要总结对您有所帮助。如果您有任何更具体的问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [万字长文+思维导图帮你梳理 Java IO 流,还学不会你来打我(值得收藏)](https://blog.csdn.net/a1405/article/details/116766237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值