IO (Input Output)流

IO流用来处理设备之间的数据传输;

JAVA对数据的操作是通过流的方式;

JAVA对于操作流的对象都在IO包中;

流按操作数据分为两种:字节流和字符流;

流按流向分为输入流和输出流。

IO流常用基类

字节流的抽象基类:

InputStream ,OutputStream

字符流的抽象基类:

Reader , Writer

注:由这4个类派生出的子类名称都是以其父类名作为子类明的后缀。

如:InputStream 的子类 FileInputStream。

如:Reader 的子类 FileReader。

既然IO流是用于操作数据的,

那么数据最常见的体现形式是:文件。

需求:在硬盘上,创建一个文件并写入一些文字数据。

找到一个专门操作文件的Writer子类对象。FileWriter。后缀名是父类名,前缀名是该流对象的功能。

import java.io.*;class FileWriterDemo
{public static void main(String[] args) throws IOException{//创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。//该文件会被创建到指定的目录下。如果该目录下已有同名文件,将被覆盖。//其实该步骤就是在明确数据要存放的目的地。FileWriter fw = new FileWriter("D:\\test.txt");//调用write方法,将字符串写入到流中。fw.write("abcdfeg");//刷新流对象中的缓冲区中的数据。//将数据刷新到目的地中。fw.flush();//关闭流资源,但是在关闭之前会刷新一次内部的缓冲中的数据,将数据刷新到目的地。//和flush的区别:flush刷新之后,流可以继续使用,close刷新后,将会关闭流。fw.close();}
}

对流的异常操作

import java.io.*;class FileWriterDemo2
{public static void main(String[] args){   //把变量放在try代码块外面,这样在finally代码块环境中也能使用 FileWriter fw = null;try{fw = new FileWriter("k:\\text.txt");fw.write("aaaaaaa");}catch(IOException e){System.out.println(e.toString());}finally{try{//判断资源对象是否存在if(fw != null)fw.close();}catch(IOException e){System.out.println(e.toString());}}}
}

读取文件内容

import java.io.*;class FileReaderDemo
{public static void main(String[] args) {FileReader fr = null;try{fr = new FileReader("D:\\test.txt");int ch = 0;while((ch=fr.read()) != -1){System.out.print((char)ch);}}catch(IOException e){System.out.println(e.toString());}finally{try{if(fr != null)fr.close();}catch(IOException e){System.out.println(e.toString());}   }  }
}

用数组参数读取文件

import java.io.*;class FileReaderDemo2
{public static void main(String[] args) throws IOException{FileReader fr = null;try{fr = new FileReader("F:\\java\\FileReaderDemo.java");char[] buf = new char[1024];//创建一个临时数组int num = 0;while((num = fr.read(buf)) != -1)//把读取的数据存入字符数组中{System.out.print(new String(buf,0,num));//把数组转成字符串并且打印出来}}catch(IOException e){System.out.println(e.toString());}finally{try{    if(fr != null)fr.close();}catch(IOException e){System.out.println(e.toString());}}}
}

文件的拷贝:

import java.io.*;class FileCopyDemo2
{public static void main(String[] args){copy();}public static void copy(){FileWriter fw = null;FileReader fr = null;try{fw = new FileWriter("F:\\java\\xin.txt",true);   //创建输入流fr = new FileReader("F:\\java\\new.txt");    //创建输出流char[] buf = new char[1024];    //定义容器int len = 0;      //定义长度while((len=fr.read(buf)) != -1){fw.write(buf,0,len); //把字符数组中的内容存入指定区域}}catch(IOException e){System.out.println(e.toString());}finally{try{if(fw != null)fw.close();}catch(IOException e){System.out.println(e.toString());}finally{    try{if(fr != null)fr.close();}catch(IOException e){System.out.println(e.toString());}}}}
}

字符流的缓冲区

缓冲区的出现提高了对数据的读写效率;

对应类

BufferedWriter , BufferedReader

缓冲区要结合流才能使用;

在流的基础上对流的功能进行了增强。

利用缓冲的文件拷贝

import java.io.*;class BufferedCopyDemo
{public static void main(String[] args) throws IOException{BufferedWriter bufw = null;BufferedReader bufr = null;try{bufw = new BufferedWriter(new FileWriter("FileWriterDemo_copy.txt"));bufr = new BufferedReader(new FileReader("FileWriterDemo.java"));String line = null;while((line = bufr.readLine()) != null){bufw.write(line);bufw.newLine();}}catch(IOException e){System.out.println(e.toString());}finally{try{if(bufr != null)bufr.close();}catch(IOException e){System.out.println(e.toString());}try{if(bufw != null)bufw.close();}catch(IOException e){System.out.println(e.toString());}}}
}

转载于:https://blog.51cto.com/tinsin/1639880

JAVA(IO流)知识整理相关推荐

  1. 【Java IO流知识总结】

    Java IO(Input&Output)

  2. JAVA系列 IO流 知识结构整理 建立合理的知识框架逻辑 输入输出流 理顺你的思维架构Fileoutput inputStream FileWriter FIleReader结构整理

    最近听见一首歌,个人创作时听见觉得挺好听的 先分享给大家https://music.163.com/#/song?id=41666363 それがあなたの幸せとしても (カバー) 切入正题 今天给大家介 ...

  3. java io流大全_Java IO流系统整理

    Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位 ...

  4. java IO流小结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  5. java io流的学习总结~~

    java io流的学习总结~~ 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类, ...

  6. java IO流详解及特性

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  7. java IO流进阶 模拟上传头像系统详解

    目录 一.前言: 二.思路: PS:直接看代码中的注释也可以. ①分析: ②总结: 三.代码: ①准备工作: ②代码演示: ③运行效果: 四.撒❀: 一.前言: 这篇文章是对之前java IO流基础 ...

  8. JAVA IO流结构图概览

    整理Java IO流的关系,并作图如下,以供参考. 下图基于JDK 1.8制作,其中需要注意的是StringBufferInputStream和LineNumberInputStream已被废弃. 详 ...

  9. Java IO流详尽解析

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

最新文章

  1. html标签里写js,JS事件(HTML标签内)
  2. 服务器清理c盘日志文件,清理WIN2003服务器C盘垃圾的批处理
  3. Python使用@property方法改变方法为参数
  4. 游戏人物标记——腾讯笔试
  5. Ansible-Playbook-template算数运算以及流程控制
  6. java复合数据类型_复合数据类型
  7. jenkins 插件目录_三十二张图告诉你如何用Jenkins构建SpringBoot
  8. CVE-2020-1472复现与完整利用
  9. dockerfile 创建自定义的tomcat服务
  10. windows下安装sloth
  11. 软件安全实验——栈溢出漏洞利用
  12. python drop用法_python进行数据清理之pandas中的drop用法
  13. python12306抢票_python编写抢票软件-12306抢票软件run下载python版-西西软件下载
  14. 系统垃圾清理bat文件
  15. 服务器装系统提示未找到任何驱动器,u盘装系统win7显示未找到任何驱动器怎么办?未找到任何驱动器解决步骤...
  16. 一款懒人必备的Python爬虫神器
  17. 使用模块化扩展iOS应用
  18. 代理模式(静态代理和动态代理)
  19. python做三维图片挑战眼力_挑战眼力!三维立体图片你能看出几个
  20. 02139计算机信息检索-第9章.网络信息检索的未来发展趋势【思维导图】

热门文章

  1. 新思科技Chekib:AI芯片架构创新面临四大挑战
  2. 一句话总结K均值算法
  3. SAP Batch Management 批次主数据中classification视图中GR Date没有被更新?
  4. TransG : A Generative Model for Knowledge Graph Embedding ACL 2016.Berlin, Germany.
  5. 乖乖给行人让路?学界推出无人机控制技术NMPC,可在低空中实现自主导航和避障...
  6. 人类正在进入超级智能时代,论一种新超级智能的崛起
  7. 仅需1/5成本:TPU是如何超越GPU,成为深度学习首选处理器的
  8. 工业4.0进行时:增强现实技术如何变革制造业
  9. 【科普】大脑是如何编码复杂信息的?
  10. 联合国《2017年信息经济报告》