Java第17章 - I/O流(上)

35 篇文章 1 订阅

目录

File类

 认识Java的流

使用字节流读写文本文件

使用字符流读写文本文件

读写二进制文件


File类

(1)在Java程序中通过使用java.io包提供的一些接口和类,对计算机中的文件进行基本的操作,包括对文件和目录属性的操作、对文件读写的操作。

(2)File对象既可以表示文件,也可以表示目录,在程序中一个File对象可以代表一个文件或目录。

(3)利用File类可以来对文件或目录进行基本操作。它可以查出与文件相关的信息,如名称、最后修改日期、文件大小等。

(4)File类的常用构造方法如下所示:

(5)File类的常用方法如下所示:

 认识Java的流

(1)读文件是指把文件中的数据读取到内存中。
(2)写文件是把内存中的数据写到文件中。
(3)Java程序通过流来读写文件。
(4)流是指一连串流程的字符,是以先进先出的方式发送和接收数据的通道。
(5)流分为输入流和输出流,输入/输出流是相对于计算机内存来说的,如果数据输入到内存,则为输入流,如果从内存中输出则为输出流。

(6)Java的输出流主要有OutputStream类和Writer类作为基类,输入流主要由InputStream类和Reader类作为基类。
(7)在java.io包中,封装了许多输入/输出流的API,在程序中,这些输入/输出流类的对象称为流对象。
(8)可以通过流对象将内存中的数据以流的方式写入文件,也可以通过流对象将文件中的数据以流的方式读取到内存。
(9)构造流对象时往往会和数据源(如文件)联系起来。数据源分为源数据源和目标数据源。输入流关联的是源数据源;输出流关联的是目标数据源。

(10)输入/输出流又分为字节流和字符流两种形式

        字节流是8位通用字节流,其基本单位是字节。字节流的基类是InputStream类和OutputStream类,它们是抽象类。

        字符流是16位Unicode字符流,基本单位是Unicode字符。字符流最适合用来处理字符串和文本,因为它们支持国际上大多数的字符集和语言。字符流的基类是Reader类和Writer类,它们是抽象类。

(11)一个被访问的流基本特征都是通过实现InputStream类、OutputStream类、Reader类和Writer类这4个抽象类的方法建立的。

(12)InputStream类常用方法如下:

InputStream类的常用子类有FileInputStream,用于从文件中读取数据。

(13)OutputStream类常用方法如下:

OutputStream类的常用子类有FileOutputStream,用于向文件写数据。

(14)Reader类常用方法如下:

  Reader类的常用子类有BufferedReader,接受Reader对象作为参数,并对其添加字符缓冲器。

 (15)Write类常用方法如下:

Write类的常用子类有BufferedWrite,用于将数据缓冲到字符输出流。

(16)在操作上字节流和字符流还有一个区别,字符流在操作时使用了缓冲区(内部存储器),而字节流在操作时直接操作文件,不会使用缓冲区。

(17)流中的方法在出现错误时都会抛出IOException异常。

使用字节流读写文本文件

(1)使用字节流类FileInputStream读文本文件 

        FileInputStream称为文件输入流,它是字节输入流InputStream抽象类的一个子类,它的作用是将文件中的数据输入到内部存储器(简称内存)中,可以利用它来读取文本文件中的数据,具体实现步骤如下:

        1)导入相关的类

                import java.io.IOException;

                import java.io.InputStream;

                import java.io.FileInputStream;

        2)构造一个文件输入流对象

                InputStream fileObject = new FileInputStream("text.txt");//此时的文件输入流对象fileObject就和源数据源(text.txt)关联起来。

        3)利用文件输入流类的方法读取文本文件中的数据

                fileObject.available();//可读取的字节

                fileObject.read();//读取文件的数据

        4)关闭文件输入流对象

                fileObject.close();

(2)使用字节流类FileOutputStream写文本文件

        FileOutputStream称为文件输出流,它是字节输出流OutputStream抽象类的子类,它的作用是把内存中的数据输出到文件中,可以利用它把内存中的数据写入到文本文件中,具体实现步骤如下:

        1)导入相关的类

                import java.io.IOException;

                import java.io.OutputStream;

                import java.io.FileOutputStream;

        2)构造一个文件输出流对象

        OutputStream fos = new FileOutnputStream("text.txt");//此时的文件输出流对象fos就和目标数据源(text.txt)关联起来。

        3)利用文件输出流类的方法把数据写入到文本文件中。

                String str = "好好学习Java";

                byte[] words = str.getBytes();

                fos.write(words,0,words.length);//利用write方法将数据写入到文件中去

        4)关闭文件输入流对象

                fos.close();

使用字符流读写文本文件

(1) 使用字符流类BufferedReader和FileReader读文本文件

        BufferedReader和FileReader两个类都是Reader抽象类的子类,它们可以通过字符流的方式读取文件,并使用缓冲区,提高了读文本文件的效率。读取文本文件的具体步骤如下:

        1)导入相关的类

                import java.io.FileReader;

                import java.io.BufferedReader;

                import java.io.IOException

        2)构造一个BufferedReader对象

                FileReader fr = new FileReader("mytest.txt");

                BufferedReader br = new BufferedReader(fr);

        3)利用BufferedReader类的方法读取文本文件中的数据

                br.readLine();//读取一行数据,返回字符串

        4)关闭相关的流对象

                br.close();//后开的流先关

                fr.close();//先开的流后关

(2) 使用字符流类BufferedWrite和FileWrite写文本文件

        BufferedWrite和FileWrite都是字符输出流Write抽象类的子类,它们可以通过字符流的方式并通过缓冲区把数据写入文本文件,提高了写文本文件的效率。把数据写入文本文件的具体操作步骤如下:

        1)导入相关的类

                import java.io.FileWriter;

                import java.io.BufferedWriter;

                import java.io.IOException;

        2)构造一个BufferedWriter对象

                FileWriter fw = new FileWriter("mytest.txt");

                BufferedWriter bw = new BufferedWriter(fw);

        3)利用BufferedWriter类的方法读取文本文件中的数据

                br.write("hello");//读取一行数据,返回字符串

        4)相关流对象的清空和关闭

                bw.flush();

                bw.close();//后开的流先关

                fw.close();//先开的流后关

读写二进制文件

读写二进制文件常用的类有DataInputStream和DataOutputStream。

1、 使用字节流读二进制文件

        利用DataInputStream类读二进制文件,其实与利用FileInputStream类读文本文件及其相似,也要用到FileInputStream类关联二进制文件。具体操作步骤如下:

        1)导入相关的类

                import java.io.FileInputStream;

                import java.io.DataInputStream;

                import java.io.IOException;

        2)构造一个数据输入流对象

                FileInputStream fis = new FileInputStream("HelloWorld.class");

                DataInputStream dis = new DataInputStream(fis);

        3)利用数据输入流类的方法读取二进制文件中的数据

                dis.readInt();//读取出来的是整数

                dis.readByte();//读取出来的数据是Byte

        4)关闭数据输入流

                dis.close();//后开的流先关

                fis.close();//先开的流后关

2、 使用字节流写二进制文件

        利用DataOutputStream类写二进制文件,其实与利用FileOutputStream类写文本文件及其相似,也要用到FileOutputStream类关联二进制文件。具体操作步骤如下:

        1)导入相关的类

                import java.io.FileOutputStream;

                import java.io.DataOutputStream;

                import java.io.IOException;

        2)构造一个数据输出流对象

                FileOutputStream fos = new FileOutputStream("temp.class");

                DataOutputStream dos = new DataOutputStream(fos);

        3)利用数据输出流类的方法把数据写入二进制文件

                dos.write(1); //把数据写入二进制文件

        4)关闭数据输入流

                dos.close();//后开的流先关

                fos.close();//先开的流后关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值