7.IO

Java的IO

IO流是用来处理设备之间的传输,Java对数据的操作是通过流的方式,java用于操作流的对象都在IO包中。

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

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

字节流的抽象基类:InputStream,OutputStream。

字符流的抽象基类:Reader,Writer。

这四个类派生出的子类名称都是以其父类名作为子类名的后缀。

字符流

FileReader

FileWriter

BufferedReader

BufferedWriter

字节流

FileInputStream

FileOutputStream

BufferedInputStream

BufferedOutputStream

转换流

InputStreamReader

OutputStreamWriter

流操作的基本规律,通过三个明确来完成

1,明确源和目的。

源:输入流。InputStream  Reader

目的:输出流。OutputStream  Writer。

2,操作的数据是否是纯文本。

是:字符流。

不是:字节流。

3,当体系明确后,在明确要使用哪个具体的对象。

通过设备来进行区分:

源设备:内存,硬盘。键盘

目的设备:内存,硬盘,控制台。

Properties是hashtable的子类

也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串,是集合中和IO技术相结合的集合容器。

该对象的特点:可以用于键值对形式的配置文件。

那么在加载数据时,需要数据有固定格式:键=值。

遍历Properties元素的方法:

 SetstringPropertyNames()          返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。

File类常见方法

创建:

boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false,和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。

boolean mkdir():创建文件夹,boolean mkdirs():创建多级文件夹。

[if !supportLists]2, [endif]删除:

boolean delete():删除失败返回false,如果文件正在被使用,则删除不了返回false,void deleteOnExit();在程序退出时删除指定文件。

3,判断:

boolean exists() ;isFile():isDirectory();isHidden();isAbsolute();

获取信息:

getName();getPath();getParent();getAbsolutePath() ;long lastModified() ;long length()

DataInputStream与DataOutputStream是可以用于操作基本数据类型的数据的流对象。

用于操作字节数组的流对象:

ByteArrayInputStream :在构造的时候,需要接收数据源,而且数据源是一个字节数组。

ByteArrayOutputStream: 在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组,这就是数据目的地。

因为这两个流对象都操作的数组,并没有使用系统资源,所以不用进行close关闭。:

源设备:

键盘System.in,硬盘 FileStream,内存 ArrayStream。

目的设备:

控制台System.out,硬盘FileStream,内存 ArrayStream。

用流的读写思想来操作数据。

键盘的最常见写法:

BufferedReader bufr =

new BufferedReader(new InputStreamReader(System.in));

(Scanner sc = new Scanner(System.in);sc.next();)

BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

你可能感兴趣的:(7.IO)