Java基础之IO流
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流相关推荐
- 【Java基础】· IO流习题详解
写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...
- Java基础学习—— IO流
Java基础学习-- IO流 1 文件 1.1 文件的创建 1.2 文件常用的方法 2 IO流 2.1 FileInputStream 2.2 FileOutputStream 2.3 文件的拷贝 2 ...
- Java基础进阶IO流概述
1.IO流,什么是IO? I : Input O : Output 通过IO可以完成硬盘文件的读和写. 2.IO流的分类? 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物 往内存 ...
- Java基础知识——IO流
简介 IO是指Input/Output,即输入和输出.以内存为中心: Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等 Output指把数据从内存输出到外部,例 ...
- 【java基础】IO流是啥?有啥用?(上)
今天我们说说java代码中对文件的操作,比如新建删除文件,读取文件内容等. File类 File类用于操作文件和目录,可对文件或目录进行新建,删除和重命名等操作.但是如果要访问文件内容本身,就需要用到 ...
- Java基础:IO 流中的 flush
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点 这里 可以跳转到教程. 内容概要 Java IO ...
- Java基础之IO流(一)
IO流(一) IO流:输入输出的流动 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流与字符流 . 流按流向分为 ...
- java基础之 IO流
javaIO流 IO流 : (input output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方. IO技术的作用:主要就是解决设备和设备之间的数据传输问题.比如: ...
- Java基础之IO流操作
第14章 File类与IO流 主要内容 File类 字节流 字符流 文件流 缓冲流 转换流 数据流 对象流 打印流 Scanner与System与IO流 教学目标 使用File类对象表示文件或目录 能 ...
最新文章
- MYSQL使用存储过程插入中文数据的疑似bug(UTF8)
- 一文看懂人工智能的发展速度到底有多快
- different application signatures解决方法
- 使用ActivityGroup需要注意的地方
- Android中图片的三级缓存策略
- 【深度学习】有个洋人小哥把整个 CNN 都给可视化了,卷积、池化清清楚楚!...
- Android之DrawText详解
- 按照演算,整个宇宙将会陷入无边的黑暗
- vue控制台报错Duplicate keys detected: 'xxxx'. This may cause an update error.解决方案
- LInux下Ubuntu下查看端口占用及关闭
- 汇编语言ax=0c58ch,第4章89C5汇编语言程序设计.ppt
- Linux 下 的 Oracle,如何安装 tnsname
- mongo php 自增,PHP7下MongoDB自增或自减一个字段的值
- C#:xml操作(待补充)
- 使用WCF实现消息推送
- java+switch语句+枚举,Java枚举类型在switch语句中的正确用法
- 【工具】IDEA打包jar包
- Python|判断素数
- 离线 维基百科 android,iPhone上的离线维基百科(附安装方法)
- 秀米编辑器如何排版svg推文,以展开为模板讲解