Java入门:IO

2018-12-14  本文已影响3人  我的袜子都是洞

IO

I(Input)指从设备上输入数据到程序中;
O(Output)指从程序中向设备中输出数据;
IO是相对于程序而言的。

File类

操作文档和目录。FIle类以一种与平台无关的方式描述一个文件或目录对象的属性。

File类功能

创建File类的方式

Windows和Linux存在路径表示方式的区别,Windows下用\分割路径,所以pathname里需要用\\分割路径,第一个\是转义字符。Linux是/没有问题。

File类常用方法

来个新鲜的栗子:列出指定目录下名称包含java的文件或文件夹
过滤文件名称的类Java_Filter.java

Java_Filter.java

包含当前main类listFiles.java

listFiles.java

流是Java中输入/输出的抽象表述。
程序想要访问内存、硬盘、网络等IO目的地,全部通过IO流的方法就可以完成,统一了访问方法。
根据数据流方向的不同,可以将数据分为输入流和输出流。
输入流只能从中读取数据,而不能向其写数据;输出流只能向其写出数据,而不能从中读取数据。

字节流
假设硬盘中有数据a中bcd,其中a用一个字节表示,字用两个字节表示,bcd分别都用一个字节表示,字节输入流,一次只从硬盘上读取一个字节,遇到字需要读取两次,数据a中bcd一个6个字节,需要读6次。
字节流传送的是字节数据(byte)。

字符流
而字符输入流,一次读取一个字符,字也是一个字符,使用字符输入流,则之需要读取5次。
字符流传送的是字符数据(char)。

流是一个逻辑概念,它把各种都写操作统一起来。一个字节输入流指向一个字节序列,可从中一次读出字节,用户不必关心它的内部结构、来源。一个字节输出流,可向其依次写入字节,它的去向和内部结构用户同样不必关心。

字节输入流

InputStream是字节输入流的顶层父类。
InputStream提供的三个基本的read方法:

字节输出流

OutputStream为字节输出流的顶层父类。

字节输出流OutputStream,用来向流中写入数据。OutputStream是所有字节输出流的顶层父类。
OutputStream类提供的三个基本write方法:

其他方法:

下面一个例子,实现了文件复制功能,综合了输入流输出流和缓存流的知识:


小栗子

序列化
Java中,很多数据是以对象的方式存在,程序运行后,希望将这些数据储存,以供下次使用,可以使用ObjectInputStream、ObjectOutputStream来做到。将对象写入流中,这个过程称为序列化,写入流中的对象必须要实现接口Serializable,才能对象序列化。

ObjectOutputStream主要方法:

ObjectInputStream主要方法:

字节流

字节流一次读取一个字节的数据,而字符流一次读取一个字符的数据。比如中文,一个字符占用两个字节,使用字节流读取,就会成乱码,而用字符流就可以正常显示。

字符输入流的类
Reader类为字符输入流的顶层父类,子类如下:

Reader类的三个基本方法:

Reader的其他方法:

使用Reader的栗子:


Reader的栗子
上一篇下一篇

猜你喜欢

热点阅读