IO流用来处理设备间数据传输,java对数据的操作是通过流的方式,而这些操作流的对象被封装在IO包中。流可以分为字符流和字节流。字符流可以设置编码方式,这就使得处理文本更加方便。

IO常用基类

字节流抽象基类InputStream,OutputStream。字符流抽象基类Reader,Writer。

字符流体系

抽象基类Writer

共性方法:write();flush();close();append()

子类FileWriter

用于写入文件。该类对象一被初始化就要指定被操作的文件。write方法将数据写入流,flush方法刷新流,close刷新并关闭流。

抽象类基类 Reader

共性方法:read();skip();reset();ready()

子类FileReader

用于读取文件。对象初始化时要指定被读取的文件。read()方法将数据读入流。

IO异常处理IOException

流对象fw要放在try块外面声明,在内部初始化,以便在finally中能访问到;fw只有不为null时才能调用close方法,所以需要有判断。

字符流的缓冲区

字符流的缓冲区提高了IO的效率,需要结合流才能使用,在流的基础上对流的功能进行了增强。对应的类为BufferedReader和BufferedWriter。

BufferedWriter

将文本写入字符输出流,缓冲各个字符,从而提供单字符,字符数组,字符串的高效写入。所以,在创建缓冲区之前要现有流对象,只要把流对象加入构造函数,再调用缓冲区的写入方法即可。

BufferedReader

从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组,行的高效读出。

子类LineNumberReader

跟踪行号的缓冲字符输出流,通过setLineNumber和getlLineNumber方法可以设置和获取当前行号。

字节流体系

抽象基类OutputStream

共性方法:write();flush();close();

子类FileOutputStream

用于写入文件。该类对象一被初始化就要指定被操作的文件。write方法将数据写入流,flush方法刷新流,close刷新并关闭流

抽象类基类 InputStream

共性方法:read();skip();reset();ready()

子类FileInputStream

用于读取文件。对象初始化时要指定被读取的文件。read()方法将数据读入流,available()返回可以读到的字节数。

字节流的缓冲区

对应的类为BufferedOutputStream和BufferedInputStream

BufferedOutputStream

该类实现缓冲的输出流,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,不必针对每次字节写入调用底层系统。

BufferedInputStream

同字符流缓冲区相同。

读取转换流

InputStreamReader类将字节流转换为字符流。它指定字符集来读取字节并解码成字符。为了达到高效率,可以考虑在BufferedReader内包装InputStreamReader。

写入转换流

OutputStreamWriter类将字符流转换为字节流。可以指定字符集来编码成字节。为了达到高效率,可以考虑在BufferedWriter内包装OutputStreamWriter。

输入流操作时应明确源----桥梁(符节转换)----缓冲,输出流操作应明确目的------桥梁(符节转换) ------缓冲。

Flie类

用来将文件或文件夹封装成对象,方便对文件和文件夹操作,也可以作为参数传递给流的构造函数。

常用方法:

  • 创建
    • createNewFile();创建新文件,如存在则返回false
    • createTempFile(prefix,suffix)静态方法,根据指定前缀后缀创建临时文件
    • mkdir();mkdirs();创建目录
  • 删除
    • delete();删除文件
    • deleteOnExit();JVM终止时请求删除此文件或目录。
  • 判断

canExcute();canRead();canWrite();exist();isDirectory();isFile()

  • 获取信息
    • getname();getPath();getParent();getAbsolutePath();length()
    • list(dir);获取目录下文件名称数组
    • listFiles(dir);获取文件对象数组

properties类

该类是集合中与IO相结合的集合容器,是hashtable的子类,即具备map集合的特点,且键值对都是字符串。该类对象可以用于键值对形式的配置文件。

  • setProperties(str,str);getProperties(str)读取设置属性
  • load()加载字节流或者字符流1.6版本后
  • Set<string> stringPropertyNames()返回属性列表中的键集合

打印流

字节输出流PrintStream类

作为outputStream的子类,为其他输出流添加了功能,使它们能打印各种数值表示形式。将各种数据都原样打印。可以直接操作文件,它的构造函数接受file对象,文件路径,字节输出流。

字符输出流PrintWriter类

它的构造函数可以接受file对象,文件路径,字节输出流outputstream,字符输出流Writer

SequenceInputStream

将多个输入流合并成一个输入流。

对象的序列化

实现堆内存中数据对象的存取,需要用到ObjectOutputStream和ObjectInputStream类来实现,也称为对象的持久化或对象的序列化。

类通过实现接口serializable来启用它的序列化功能。类中的静态成员变量是不能被序列化的,因为静态成员变量并不在堆内存中存储,而是存储在内存方法区中。非静态成员如果加上transient关键字修饰,则也可以不被序列化。

管道流

通过管道流输入和输出可以直接连接,通过结合线程使用,需要用到PipledOutputStream和PipledInputStream类来实现.

管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有输入字节。通常情况下,数据由某个线程从PipledInputStream对象读取,并由其他线程写入到对应PipledOutputStream对象中去。

随机访问文件

RandomAccessFile类的对象能对文件进行随机的读写操作,内部封装了byte数组,通过指针对数组操作。通过getFilePointer()获取指针位置,通过seek改变指针位置。

转载于:https://www.cnblogs.com/cqumonk/p/4006146.html

Java基础之IO流相关推荐

  1. 【Java基础】· IO流习题详解

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  2. Java基础学习—— IO流

    Java基础学习-- IO流 1 文件 1.1 文件的创建 1.2 文件常用的方法 2 IO流 2.1 FileInputStream 2.2 FileOutputStream 2.3 文件的拷贝 2 ...

  3. Java基础进阶IO流概述

    1.IO流,什么是IO? I : Input O : Output 通过IO可以完成硬盘文件的读和写. 2.IO流的分类? 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物 往内存 ...

  4. Java基础知识——IO流

    简介 IO是指Input/Output,即输入和输出.以内存为中心: Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等 Output指把数据从内存输出到外部,例 ...

  5. 【java基础】IO流是啥?有啥用?(上)

    今天我们说说java代码中对文件的操作,比如新建删除文件,读取文件内容等. File类 File类用于操作文件和目录,可对文件或目录进行新建,删除和重命名等操作.但是如果要访问文件内容本身,就需要用到 ...

  6. Java基础:IO 流中的 flush

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点 这里 可以跳转到教程. 内容概要 Java IO ...

  7. Java基础之IO流(一)

    IO流(一) IO流:输入输出的流动 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流与字符流 . 流按流向分为 ...

  8. java基础之 IO流

    javaIO流 IO流 : (input  output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方. IO技术的作用:主要就是解决设备和设备之间的数据传输问题.比如: ...

  9. Java基础之IO流操作

    第14章 File类与IO流 主要内容 File类 字节流 字符流 文件流 缓冲流 转换流 数据流 对象流 打印流 Scanner与System与IO流 教学目标 使用File类对象表示文件或目录 能 ...

最新文章

  1. MYSQL使用存储过程插入中文数据的疑似bug(UTF8)
  2. 一文看懂人工智能的发展速度到底有多快
  3. different application signatures解决方法
  4. 使用ActivityGroup需要注意的地方
  5. Android中图片的三级缓存策略
  6. 【深度学习】有个洋人小哥把整个 CNN 都给可视化了,卷积、池化清清楚楚!...
  7. Android之DrawText详解
  8. 按照演算,整个宇宙将会陷入无边的黑暗
  9. vue控制台报错Duplicate keys detected: 'xxxx'. This may cause an update error.解决方案
  10. LInux下Ubuntu下查看端口占用及关闭
  11. 汇编语言ax=0c58ch,第4章89C5汇编语言程序设计.ppt
  12. Linux 下 的 Oracle,如何安装 tnsname
  13. mongo php 自增,PHP7下MongoDB自增或自减一个字段的值
  14. C#:xml操作(待补充)
  15. 使用WCF实现消息推送
  16. java+switch语句+枚举,Java枚举类型在switch语句中的正确用法
  17. 【工具】IDEA打包jar包
  18. Python|判断素数
  19. 离线 维基百科 android,iPhone上的离线维基百科(附安装方法)
  20. 秀米编辑器如何排版svg推文,以展开为模板讲解

热门文章

  1. vue异步数据 报错_VUE 异步数据传递给 component props 的问题
  2. [leetcode]5336. 上升下降字符串
  3. 牛客网 二叉搜索树与双向链表
  4. 试题17 方程的解(枚举法)
  5. UnityShader25:在Unity中实现泛光
  6. [debug] 令人智熄的调试:忘记加return
  7. python机器学习案例系列教程——基于规则的分类器
  8. AD19原理图背景栅格去掉(改为纯色)
  9. MySQL 5.6内存占用过高解决方案
  10. Web Api 返回图片流给前端