0
点赞
收藏
分享

微信扫一扫

Java学习篇之IO流

(一)什么是IO?

Java学习篇之IO流_IO流

   IOInputOutput的缩写,表示的是输入输出流

(1)   I :Input,表示的是将数据从硬盘的文件中输入到内存,称为Read操作。(2)  O :Output,表示的是将数据从内存输出到硬盘的文件,也称为write操作

          Java程序中,对于数据的操作是以"流“的方式进行的。​

说明:

①  通过IO流来完成硬盘上数据的读与写(作用)

②  java.io包下提供了各种”流“类和接口,用以获取不同种类的数据,并通过标准的方          法输入或输出数据

(二)流的分类

Java学习篇之IO流_IO流_02

   (1)根据操作数的基本单位:字节流(8位)、字符流(16位)

   (2)根据数据的流向: 输入流、输出流

   (3)根据流的对象: 节点流、处理流

①如何区分输入和输出流的流向呢??

站在以内存为核心的角度上:

         若是读取数据,就是 从  磁盘文件---->内存

         若是写入数据,就是 从  内存 ------>磁盘文件                         

②字节流  VS 字节流??

Java学习篇之IO流_IO流_03

      字节流在操作时本身不会用到缓冲区(内存),是文件本身直接进行操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。

体系结构如下:

Java学习篇之IO流_IO流_04

表格如下:

          抽象基类

          节点流

          缓冲流

        InputStream

      FileInputStream

BufferedInputStream

       OutputStream

      FileOutputStream

BufferedOutputStream

          Writer

      FileWriter

      BufferedWriter

          Reader

      FileReader

      BufferedReader

说明:

(1)FileInputStream和FileOutputStream是用来处理字节的

(2)FileWriter和FileReader是用来处理字符的

使用场景

字符流:文本文件 <.txt  .java  .c  .cpp等>

字节流:非文本文件 <.jpg  .mp3  .mp4  .avi  .doc  .ppt等>

(三)使用介绍

I. <FileWriter>&<FileReader>

(1)基本介绍

        FileWriter指的是从内存向文件写入字符数据

       FileReader指的是从文件向内存读出字符数据

(2)使用步骤

    ①实例化File类的对象(指明要读出或写入的文件路径)

   ②创建一个具体的流对象(操作具体数据)

   ③通过循环进行数据的读入或读出

   ④流的关闭(必要操作)

(3)实例代码
FileReader测试

    @Test
public void testFileReader() {
FileReader tr= null;
try {
//实例化File类的对象,指明路径
File file = new File("hello1.txt");
//创建具体的流对象,用来进行操作数据
tr = new FileReader(file);
//读写数据
int data;
while((data=tr.read())!=-1){
System.out.print((char)data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭对应的流
try {
if(tr!=null) {
//条件判断是为了防止出现空指针异常
tr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

Java学习篇之IO流_IO流_05

说明:

①通过read读入的是对应字符的ASCILL码值

②异常处理使用的是结构: try---catch---finally(流的关闭

      如果使用throws方法,可能造成内存泄漏

③流的关闭

      数据库连接、输入输出流、Socket连接无法·通过垃圾回收机制进行回收,所以需要手手动关闭。

FileWriter测试

@Test
public void testFileWriter() throws IOException {
//创建文件类对象
File file=new File("hello1.txt");
//创建流对象
FileWriter tr = new FileWriter(file,true);
//写入数据
tr.write("Welcome to China".toCharArray());
tr.write(" Jerry");
//关闭流
tr.close();
}

说明:

①再通过写入流向文件中写入数据时,可以直接使用write方法

说明:

②输出操作,对应的File可以不存在的。并不会报异常

③ File对应的硬盘中的文件如果不存在,在输出的过程中,会自动创建此文件。

    File对应的硬盘中的文件如果存在:

       若流使用的构造器是:FileWriter(file,false) / FileWriter(file):对原有文件的                                       覆盖

       若流使用的构造器是:FileWriter(file,true):不会对原有文件覆盖,而是在原有                                       文 件基础上追加内容

常用的write()重载方法

举报

相关推荐

0 条评论