Java 流(Stream)、文件(File)和IO 的学习笔记

本文详细介绍了Java中关于流(Stream)、文件(File)和IO的操作,包括字节流与字符流的使用,如InputStream、OutputStream、Reader、Writer的子类及应用场景。还讲解了File类的构造函数和方法,FileReader与FileWriter的构造及使用,以及如何创建和读取目录。Java.IO包提供了强大的输入输出支持,适用于文件传输和网络编程。
摘要由CSDN通过智能技术生成

Java 流(Stream)、文件(File)和IO

Java.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

Java为I/O提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。

java IO流

I/O类库中使用“流”这个抽象概念。Java对设备中数据的操作是通过流的方式。表示任何有能力产出数据的数据源对象,或者是有能力接受数据的接收端对象。“流”屏蔽了实际的I/O设备中处理数据的细节。IO流用来处理设备之间的数据传输。设备是指硬盘、内存、键盘录入、网络等。

IO的分类可以为:

  • 流按操作数据类型的不同分为两种:字节流与字符流。
  • 流按流向分为:输入流,输出流(以程序为参照物,输入到程序,或是从程序输出)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vM2caHH4-1590807953678)(C:\Users\ABC\Desktop\暂存\8926909-b2b4859ffeb3ae26.png)]

一、字节流
1、Inpustream

InputStreamread方法,一次读取一个字节,OutputStreamwrite方法一次写一个int。这两个类都是抽象类。意味着不能创建对象,那么需要找到具体的子类来使用。

示例一:使用 read()方法,一次读取一个字节,读到文件末尾返回-1.

		// 打开流
        FileInputStream fis = new FileInputStream(path);
        int len;
        while ((len = fis.read()) != -1) {
   
            System.out.print((char) len);
        }
        // 使用完关闭流
        fis.close();

示例二:使用read()方法的时候,可以将读到的数据装入到字节数组中,一次性的操作数组,可以提高效率。

		// 打开流
        FileInputStream fis = new FileInputStream(path);
        // 通过流读取内容
        byte[] byt = new byte[1024];
        int len = fis.read(byt);
        for (int i = 0; i <len; i++) {
   
            System.out.print(byt[i]);
      }
    
        // 使用完关闭流
        fis.close();

示例三:使用read(byte[] b,int off,int len)把数组的一部分当做流的容器来使用

		// 打开流
        FileInputStream fis = new FileInputStream(path);
        // 通过流读取内容
        byte[] byt = new byte[1024];
        // 从什么地方开始存读到的数据
        int start = 5;
        // 希望最多读多少个(如果是流的末尾,流中没有足够数据)
        int maxLen = 6;

        // 实际存放了多少个
        int len = fis.read(byt, start, maxLen);

        for (int i = start; i < start + maxLen; i++) {
   
            System.out.print((char) byt[i]);
        }
        // 使用完关闭流
        fis.close();

示例四:使用缓冲(提高效率),并循环读取(读完所有内容).

		//使用字节数组当缓冲
		FileInputStream fis = new FileInputStream(path);
		byte[] byt = new byte[1024];
        int len = 0;
        while ((len = fis.read(byt)) != -1) {
   
            System.out.println(new String(byt, 0, len));
        }
        fis.close();
2、OutputStream

OutputStramwrite方法,一次只能写一个字节。为了提高效率,可以使用缓冲,在OutputStram类中有write(byte[] b)方法,将 b.length个字节从指定的 byte 数组写入此输出流中。

		// 打开文件输出流,流的目的地是指定的文件
        FileOutputStream fos = new FileOutputStream(path,true);

        // 通过流向文件写数据
        byte[] byt = "java".getBytes();
        fos.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值